Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


nomadnet/ui/textui/Interfaces.py 503ea58b852a8fa4be4dd7bdcc1cff4488392bc5 (503ea58b) Text, 119.46 KB

Tff7b72import T7ee787RNS
Tff7b72import T7ee787time
Tff7b72import T7ee787nomadnet
Tff7b72import T7ee787threading
Tff7b72from T7ee787math Tff7b72import Te6edf3log10Tb4b4b4, Tffa657pow

Tff7b72from T7ee787nomadnetT7ee787.T7ee787vendorT7ee787.T7ee787additional_urwid_widgetsT7ee787.T7ee787FormWidgets Tff7b72import Tff7b72*
Tff7b72from T7ee787nomadnetT7ee787.T7ee787vendorT7ee787.T7ee787AsciiChart Tff7b72import Te6edf3AsciiChart

T8b949e### GYLPHS ###
Te6edf3INTERFACE_GLYPHS Tff7b72= Tb4b4b4{
T8b949e# Glyph name # Plain # Unicode # Nerd Font
Tb4b4b4(Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(IP)Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\U0001f5a7Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\U000f0200Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ffSerialInterfaceTypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(<->)Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\u2194Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\U000f065cTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ffRNodeInterfaceTypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(R)Ta5d6ff" Tb4b4b4, Ta5d6ff"Tffea00\u16b1Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\U000f043aTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ffOtherInterfaceTypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(#)Ta5d6ff" Tb4b4b4, Ta5d6ff"Tffea00\U0001f67eTa5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\ued95Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4}

T8b949e### HELPER ###
Te6edf3PLATFORM_IS_LINUX Tff7b72= Tff7b72False
Tff7b72tryTb4b4b4:
Te6edf3PLATFORM_IS_LINUX Tff7b72= Tb4b4b4(Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4) Tff7b72or
Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_linuxTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72except Tf85149ExceptionTb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ff_get_interface_iconTb4b4b4(Te6edf3glyphsetTb4b4b4, Te6edf3iface_typeTb4b4b4)Tb4b4b4:
Te6edf3glyphset_index Tff7b72= T79c0ff1 T8b949e# Default to unicode
Tff7b72if Te6edf3glyphset Tff7b72== Ta5d6ff"Ta5d6ffplainTa5d6ff"Tb4b4b4:
Te6edf3glyphset_index Tff7b72= T79c0ff0 T8b949e# plain
Tff7b72elif Te6edf3glyphset Tff7b72== Ta5d6ff"Ta5d6ffnerdfontTa5d6ff"Tb4b4b4:
Te6edf3glyphset_index Tff7b72= T79c0ff2 T8b949e# nerdfont

Te6edf3type_to_glyph_tuple Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffAutoInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffTCPClientInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffUDPInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNetworkInterfaceTypeTa5d6ff"Tb4b4b4,

Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRNodeInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRNodeInterfaceTypeTa5d6ff"Tb4b4b4,

Ta5d6ff"Ta5d6ffSerialInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSerialInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSerialInterfaceTypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffAX25KISSInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSerialInterfaceTypeTa5d6ff"Tb4b4b4,

Ta5d6ff"Ta5d6ffPipeInterfaceTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOtherInterfaceTypeTa5d6ff"
Tb4b4b4}

Te6edf3glyph_tuple_name Tff7b72= Te6edf3type_to_glyph_tupleTff7b72.Td2a8ffgetTb4b4b4(Te6edf3iface_typeTb4b4b4, Ta5d6ff"Ta5d6ffOtherInterfaceTypeTa5d6ff"Tb4b4b4)

Tff7b72for Te6edf3glyph_tuple Tff7b72in Te6edf3INTERFACE_GLYPHSTb4b4b4:
Tff7b72if Te6edf3glyph_tupleTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== Te6edf3glyph_tuple_nameTb4b4b4:
Tff7b72return Te6edf3glyph_tupleTb4b4b4[Te6edf3glyphset_index Tff7b72+ T79c0ff1Tb4b4b4]

T8b949e# Fallback
Tff7b72return Ta5d6ff"Ta5d6ff(#)Ta5d6ff" Tff7b72if Te6edf3glyphset Tff7b72== Ta5d6ff"Ta5d6ffplainTa5d6ff" Tff7b72else Ta5d6ff"Tffea00\U0001f67eTa5d6ff" Tff7b72if Te6edf3glyphset Tff7b72== Ta5d6ff"Ta5d6ffunicodeTa5d6ff" Tff7b72else Ta5d6ff"Tffea00\ued95Ta5d6ff"

Tff7b72def Td2a8ffformat_bytesTb4b4b4(Te6edf3bytes_valueTb4b4b4)Tb4b4b4:
Te6edf3units Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffbytesTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffKBTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffMBTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffGBTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffTBTa5d6ff'Tb4b4b4]
Te6edf3size Tff7b72= Tffa657floatTb4b4b4(Te6edf3bytes_valueTb4b4b4)
Te6edf3unit_index Tff7b72= T79c0ff0

Tff7b72while Te6edf3size Tff7b72>Tff7b72= T79c0ff1024.0 Tff7b72and Te6edf3unit_index Tff7b72< Tffa657lenTb4b4b4(Te6edf3unitsTb4b4b4) Tff7b72- T79c0ff1Tb4b4b4:
Te6edf3size Tff7b72/Tff7b72= T79c0ff1024.0
Te6edf3unit_index Tff7b72+Tff7b72= T79c0ff1

Tff7b72if Te6edf3unit_index Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Tffa657intTb4b4b4(Te6edf3sizeTb4b4b4)Tffd700}Ta5d6ff Tffd700{Te6edf3unitsTb4b4b4[Te6edf3unit_indexTb4b4b4]Tffd700}Ta5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Tffd700{Te6edf3sizeTffd700:Ta5d6ff.1fTffd700}Ta5d6ff Tffd700{Te6edf3unitsTb4b4b4[Te6edf3unit_indexTb4b4b4]Tffd700}Ta5d6ff"

Tff7b72def Td2a8ff_get_cols_rowsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffscreenTff7b72.Td2a8ffget_cols_rowsTb4b4b4(Tb4b4b4)


T8b949e### PORT FUNCTIONS ###
Te6edf3PYSERIAL_AVAILABLE Tff7b72= Tff7b72False T8b949e# If NomadNet is installed on environments with rnspure instead of rns, pyserial won't be available
Tff7b72tryTb4b4b4:
Tff7b72import T7ee787serialT7ee787.T7ee787toolsT7ee787.T7ee787list_ports
Te6edf3PYSERIAL_AVAILABLE Tff7b72= Tff7b72True
Tff7b72except Tf85149ImportErrorTb4b4b4:
Tff7b72class T56d364DummyPortTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4, Te6edf3descriptionTff7b72=Tff7b72NoneTb4b4b4, Te6edf3manufacturerTff7b72=Tff7b72NoneTb4b4b4, Te6edf3hwidTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Te6edf3device
Tff7b72selfTff7b72.Td2a8ffdescription Tff7b72= Te6edf3description Tff7b72or Te6edf3device
Tff7b72selfTff7b72.Td2a8ffmanufacturer Tff7b72= Te6edf3manufacturer
Tff7b72selfTff7b72.Td2a8ffhwid Tff7b72= Te6edf3hwid
Tff7b72selfTff7b72.Td2a8ffvid Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffpid Tff7b72= Tff7b72None

Tff7b72def Td2a8ffget_port_infoTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3PYSERIAL_AVAILABLETb4b4b4:
Tff7b72return Tb4b4b4[Tb4b4b4]

Tff7b72tryTb4b4b4:
Te6edf3ports Tff7b72= Te6edf3serialTff7b72.Td2a8fftoolsTff7b72.Td2a8fflist_portsTff7b72.Td2a8ffcomportsTb4b4b4(Tb4b4b4)
Te6edf3port_info Tff7b72= Tb4b4b4[Tb4b4b4]

T8b949e# Ports are sorted into categories for dropdown, priority ports appear first
Te6edf3priority_ports Tff7b72= Tb4b4b4[Tb4b4b4] T8b949e# USB, ACM, bluetooth, etc
Te6edf3standard_ports Tff7b72= Tb4b4b4[Tb4b4b4] T8b949e# COM, tty/s ports

Tff7b72for Te6edf3port Tff7b72in Te6edf3portsTb4b4b4:
Te6edf3desc Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3portTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"
Tff7b72if Te6edf3portTff7b72.Td2a8ffdescription Tff7b72and Te6edf3portTff7b72.Td2a8ffdescription Tff7b72!= Te6edf3portTff7b72.Td2a8ffdeviceTb4b4b4:
Te6edf3desc Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Tffd700{Te6edf3portTff7b72.Td2a8ffdescriptionTffd700}Ta5d6ff)Ta5d6ff"
Tff7b72if Te6edf3portTff7b72.Td2a8ffmanufacturerTb4b4b4:
Te6edf3desc Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff - Tffd700{Te6edf3portTff7b72.Td2a8ffmanufacturerTffd700}Ta5d6ff"

Te6edf3is_standard Tff7b72= Tb4b4b4(
Te6edf3portTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ffCOMTa5d6ff"Tb4b4b4) Tff7b72or T8b949e# windows
Ta5d6ff"Ta5d6ff/dev/ttySTa5d6ff" Tff7b72in Te6edf3portTff7b72.Td2a8ffdevice Tff7b72or T8b949e# Linux
Ta5d6ff"Ta5d6ffSerialTa5d6ff" Tff7b72in Te6edf3portTff7b72.Td2a8ffdescription
Tb4b4b4)

Te6edf3port_data Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6ffdeviceTa5d6ff'Tb4b4b4: Te6edf3portTff7b72.Td2a8ffdeviceTb4b4b4,
Ta5d6ff'Ta5d6ffdescriptionTa5d6ff'Tb4b4b4: Te6edf3descTb4b4b4,
Ta5d6ff'Ta5d6ffhwidTa5d6ff'Tb4b4b4: Te6edf3portTff7b72.Td2a8ffhwidTb4b4b4,
Ta5d6ff'Ta5d6ffvidTa5d6ff'Tb4b4b4: Te6edf3portTff7b72.Td2a8ffvidTb4b4b4,
Ta5d6ff'Ta5d6ffpidTa5d6ff'Tb4b4b4: Te6edf3portTff7b72.Td2a8ffpidTb4b4b4,
Ta5d6ff'Ta5d6ffis_standardTa5d6ff'Tb4b4b4: Te6edf3is_standard
Tb4b4b4}

Tff7b72if Te6edf3is_standardTb4b4b4:
Te6edf3standard_portsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3port_dataTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3priority_portsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3port_dataTb4b4b4)

Te6edf3priority_portsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[Ta5d6ff'Ta5d6ffdeviceTa5d6ff'Tb4b4b4]Tb4b4b4)
Te6edf3standard_portsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[Ta5d6ff'Ta5d6ffdeviceTa5d6ff'Tb4b4b4]Tb4b4b4)

Tff7b72return Te6edf3priority_ports Tff7b72+ Te6edf3standard_ports
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6fferror accessing serial ports: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return Tb4b4b4[Tb4b4b4]

Tff7b72def Td2a8ffget_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3PYSERIAL_AVAILABLETb4b4b4:
Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff/dev/ttyUSB0 or COM port (pyserial not installed)Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3port_info Tff7b72= Te6edf3get_port_infoTb4b4b4(Tb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Te6edf3port_infoTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Te6edf3options Tff7b72= Tb4b4b4[Te6edf3pTb4b4b4[Ta5d6ff'Ta5d6ffdescriptionTa5d6ff'Tb4b4b4] Tff7b72for Te6edf3p Tff7b72in Te6edf3port_infoTb4b4b4]
Te6edf3device_map Tff7b72= Tb4b4b4{Te6edf3pTb4b4b4[Ta5d6ff'Ta5d6ffdescriptionTa5d6ff'Tb4b4b4]Tb4b4b4: Te6edf3pTb4b4b4[Ta5d6ff'Ta5d6ffdeviceTa5d6ff'Tb4b4b4] Tff7b72for Te6edf3p Tff7b72in Te6edf3port_infoTb4b4b4}

Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Te6edf3optionsTb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Te6edf3optionsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72if Te6edf3options Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3device_mapTb4b4b4[Te6edf3xTb4b4b4]
Tb4b4b4}
Tff7b72elseTb4b4b4:
T8b949e# single or no ports - use text field
Te6edf3default Tff7b72= Te6edf3port_infoTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff'Ta5d6ffdeviceTa5d6ff'Tb4b4b4] Tff7b72if Te6edf3port_info Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3placeholder Tff7b72= Ta5d6ff"Ta5d6ff/dev/ttyXXX (or COM port on Windows)Ta5d6ff"

Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Te6edf3defaultTb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Te6edf3placeholderTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}

T8b949e### RNODE ####
Tff7b72def Td2a8ffcalculate_rnode_parametersTb4b4b4(Te6edf3bandwidthTb4b4b4, Te6edf3spreading_factorTb4b4b4, Te6edf3coding_rateTb4b4b4, Te6edf3noise_floorTff7b72=T79c0ff6Tb4b4b4, Te6edf3antenna_gainTff7b72=T79c0ff0Tb4b4b4,
Te6edf3transmit_powerTff7b72=T79c0ff17Tb4b4b4)Tb4b4b4:
Te6edf3crn Tff7b72= Tb4b4b4{
T79c0ff5Tb4b4b4: T79c0ff1Tb4b4b4,
T79c0ff6Tb4b4b4: T79c0ff2Tb4b4b4,
T79c0ff7Tb4b4b4: T79c0ff3Tb4b4b4,
T79c0ff8Tb4b4b4: T79c0ff4Tb4b4b4,
Tb4b4b4}
Te6edf3coding_rate_n Tff7b72= Te6edf3crnTff7b72.Td2a8ffgetTb4b4b4(Te6edf3coding_rateTb4b4b4, T79c0ff1Tb4b4b4)

Te6edf3sfn Tff7b72= Tb4b4b4{
T79c0ff5Tb4b4b4: Tff7b72-T79c0ff2.5Tb4b4b4,
T79c0ff6Tb4b4b4: Tff7b72-T79c0ff5Tb4b4b4,
T79c0ff7Tb4b4b4: Tff7b72-T79c0ff7.5Tb4b4b4,
T79c0ff8Tb4b4b4: Tff7b72-T79c0ff10Tb4b4b4,
T79c0ff9Tb4b4b4: Tff7b72-T79c0ff12.5Tb4b4b4,
T79c0ff10Tb4b4b4: Tff7b72-T79c0ff15Tb4b4b4,
T79c0ff11Tb4b4b4: Tff7b72-T79c0ff17.5Tb4b4b4,
T79c0ff12Tb4b4b4: Tff7b72-T79c0ff20
Tb4b4b4}

Te6edf3data_rate Tff7b72= Te6edf3spreading_factor Tff7b72* Tb4b4b4(
Tb4b4b4(T79c0ff4 Tff7b72/ Tb4b4b4(T79c0ff4 Tff7b72+ Te6edf3coding_rate_nTb4b4b4)Tb4b4b4) Tff7b72/ Tb4b4b4(Tffa657powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3spreading_factorTb4b4b4) Tff7b72/ Tb4b4b4(Te6edf3bandwidth Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72* T79c0ff1000

Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff174 Tff7b72+ T79c0ff10 Tff7b72* Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noise_floor Tff7b72+ Tb4b4b4(Te6edf3sfnTff7b72.Td2a8ffgetTb4b4b4(Te6edf3spreading_factorTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3bandwidth Tff7b72== T79c0ff203125 Tff7b72or Te6edf3bandwidth Tff7b72== T79c0ff406250 Tff7b72or Te6edf3bandwidth Tff7b72> T79c0ff500000Tb4b4b4:
Te6edf3sensitivity Tff7b72= Tff7b72-T79c0ff165.6 Tff7b72+ T79c0ff10 Tff7b72* Te6edf3log10Tb4b4b4(Te6edf3bandwidthTb4b4b4) Tff7b72+ Te6edf3noise_floor Tff7b72+ Tb4b4b4(Te6edf3sfnTff7b72.Td2a8ffgetTb4b4b4(Te6edf3spreading_factorTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)

Te6edf3link_budget Tff7b72= Tb4b4b4(Te6edf3transmit_power Tff7b72- Te6edf3sensitivityTb4b4b4) Tff7b72+ Te6edf3antenna_gain

Tff7b72if Te6edf3data_rate Tff7b72< T79c0ff1000Tb4b4b4:
Te6edf3data_rate_str Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3data_rateTffd700:Ta5d6ff.0fTffd700}Ta5d6ff bpsTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3data_rate_str Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Tb4b4b4(Te6edf3data_rate Tff7b72/ T79c0ff1000Tb4b4b4)Tffd700:Ta5d6ff.2fTffd700}Ta5d6ff kbpsTa5d6ff"

Tff7b72return Tb4b4b4{
Ta5d6ff"Ta5d6ffdata_rateTa5d6ff"Tb4b4b4: Te6edf3data_rate_strTb4b4b4,
Ta5d6ff"Ta5d6fflink_budgetTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3link_budgetTffd700:Ta5d6ff.1fTffd700}Ta5d6ff dBTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsensitivityTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3sensitivityTffd700:Ta5d6ff.1fTffd700}Ta5d6ff dBmTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffraw_data_rateTa5d6ff"Tb4b4b4: Te6edf3data_rateTb4b4b4,
Ta5d6ff"Ta5d6ffraw_link_budgetTa5d6ff"Tb4b4b4: Te6edf3link_budgetTb4b4b4,
Ta5d6ff"Ta5d6ffraw_sensitivityTa5d6ff"Tb4b4b4: Te6edf3sensitivity
Tb4b4b4}

Tff7b72class T56d364RNodeCalculatorTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parent_viewTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent_view Tff7b72= Te6edf3parent_view
Tff7b72selfTff7b72.Td2a8ffupdate_alarm Tff7b72= Tff7b72None

Tff7b72selfTff7b72.Td2a8ffdata_rate_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffData Rate: Calculating...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fflink_budget_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffLink Budget: Calculating...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsensitivity_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffSensitivity: Calculating...Ta5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffnoise_floor_edit Tff7b72= Te6edf3urwidTff7b72.Td2a8ffEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffantenna_gain_edit Tff7b72= Te6edf3urwidTff7b72.Td2a8ffEditTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)

Te6edf3layout Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff28Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffEnter Noise Floor (dB): Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffnoise_floor_edit
Tb4b4b4]Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff28Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffEnter Antenna Gain (dBi): Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffantenna_gain_edit
Tb4b4b4]Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffOn-Air Calculations:Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffdata_rate_widgetTb4b4b4,
Tff7b72selfTff7b72.Td2a8fflink_budget_widgetTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffsensitivity_widgetTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4[
Ta5d6ff"Ta5d6ffThese calculations will update as you change RNode parametersTa5d6ff"
Tb4b4b4]Tb4b4b4)
Tb4b4b4]Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3layoutTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffconnect_all_field_signalsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffupdate_calculationTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffconnect_all_field_signalsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnoise_floor_editTb4b4b4, Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ff_queue_updateTb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Tff7b72selfTff7b72.Td2a8ffantenna_gain_editTb4b4b4, Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ff_queue_updateTb4b4b4)
Te6edf3rnode_fields Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ffbandwidthTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffspreadingfactorTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffcodingrateTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6fftxpowerTa5d6ff'Tb4b4b4]

Tff7b72for Te6edf3field_name Tff7b72in Te6edf3rnode_fieldsTb4b4b4:
Tff7b72if Te6edf3field_name Tff7b72in Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTb4b4b4:

Te6edf3field_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTb4b4b4[Te6edf3field_nameTb4b4b4]Tb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]

Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3field_widgetTb4b4b4, Ta5d6ff'Ta5d6ffedit_textTa5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3field_widgetTb4b4b4, Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ff_queue_updateTb4b4b4)
Tff7b72elif Tffa657hasattrTb4b4b4(Te6edf3field_widgetTb4b4b4, Ta5d6ff'Ta5d6ff_emitTa5d6ff'Tb4b4b4) Tff7b72and Ta5d6ff'Ta5d6ffchangeTa5d6ff' Tff7b72in Tffa657getattrTb4b4b4(Te6edf3field_widgetTb4b4b4, Ta5d6ff'Ta5d6ffsignalsTa5d6ff'Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4:
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3field_widgetTb4b4b4, Ta5d6ff'Ta5d6ffchangeTa5d6ff'Tb4b4b4, Tff7b72selfTff7b72.Td2a8ff_queue_updateTb4b4b4)

Tff7b72def Td2a8ff_queue_updateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3new_textTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffupdate_alarm Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffremove_alarmTb4b4b4(Tff7b72selfTff7b72.Td2a8ffupdate_alarmTb4b4b4)
Tff7b72exceptTb4b4b4:
Tff7b72pass

Tff7b72selfTff7b72.Td2a8ffupdate_alarm Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(
T79c0ff0.3Tb4b4b4, Tff7b72selfTff7b72.Td2a8ff_delayed_updateTb4b4b4)

Tff7b72def Td2a8ff_delayed_updateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_alarm Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffupdate_calculationTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_calculationTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:

Tff7b72tryTb4b4b4:
Te6edf3bandwidth_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffbandwidthTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)
Te6edf3bandwidth Tff7b72= Tffa657intTb4b4b4(Te6edf3bandwidth_widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3bandwidth_widget Tff7b72else T79c0ff125000
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3bandwidth Tff7b72= T79c0ff125000

Tff7b72tryTb4b4b4:
Te6edf3sf_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffspreadingfactorTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)
Te6edf3spreading_factor Tff7b72= Tffa657intTb4b4b4(Te6edf3sf_widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3sf_widget Tff7b72else T79c0ff7
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3spreading_factor Tff7b72= T79c0ff7

Tff7b72tryTb4b4b4:
Te6edf3cr_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffcodingrateTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)
Te6edf3coding_rate Tff7b72= Tffa657intTb4b4b4(Te6edf3cr_widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3cr_widget Tff7b72else T79c0ff5
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3coding_rateTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Ta5d6ff"Ta5d6ff:Ta5d6ff" Tff7b72in Te6edf3coding_rateTb4b4b4:
Te6edf3coding_rate Tff7b72= Tffa657intTb4b4b4(Te6edf3coding_rateTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3coding_rate Tff7b72= T79c0ff5

Tff7b72tryTb4b4b4:
Te6edf3txpower_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparent_viewTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6fftxpowerTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3txpower_widgetTb4b4b4, Ta5d6ff'Ta5d6ffedit_textTa5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3txpower_text Tff7b72= Te6edf3txpower_widgetTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3txpower Tff7b72= Tffa657intTb4b4b4(Te6edf3txpower_textTb4b4b4) Tff7b72if Te6edf3txpower_text Tff7b72else T79c0ff17
Tff7b72elseTb4b4b4:
Te6edf3txpower Tff7b72= Tffa657intTb4b4b4(Te6edf3txpower_widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3txpower_widget Tff7b72else T79c0ff17
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3txpower Tff7b72= T79c0ff17

Tff7b72tryTb4b4b4:
Te6edf3noise_floor_text Tff7b72= Tff7b72selfTff7b72.Td2a8ffnoise_floor_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3noise_floor Tff7b72= Tffa657intTb4b4b4(Te6edf3noise_floor_textTb4b4b4) Tff7b72if Te6edf3noise_floor_text Tff7b72else T79c0ff0
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3noise_floor Tff7b72= T79c0ff0

Tff7b72tryTb4b4b4:
Te6edf3antenna_gain_text Tff7b72= Tff7b72selfTff7b72.Td2a8ffantenna_gain_editTff7b72.Td2a8ffedit_textTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3antenna_gain Tff7b72= Tffa657intTb4b4b4(Te6edf3antenna_gain_textTb4b4b4) Tff7b72if Te6edf3antenna_gain_text Tff7b72else T79c0ff0
Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149AttributeErrorTb4b4b4)Tb4b4b4:
Te6edf3antenna_gain Tff7b72= T79c0ff0

Te6edf3result Tff7b72= Te6edf3calculate_rnode_parametersTb4b4b4(
Te6edf3bandwidthTff7b72=Te6edf3bandwidthTb4b4b4,
Te6edf3spreading_factorTff7b72=Te6edf3spreading_factorTb4b4b4,
Te6edf3coding_rateTff7b72=Te6edf3coding_rateTb4b4b4,
Te6edf3noise_floorTff7b72=Te6edf3noise_floorTb4b4b4,
Te6edf3antenna_gainTff7b72=Te6edf3antenna_gainTb4b4b4,
Te6edf3transmit_powerTff7b72=Te6edf3txpower
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdata_rate_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffData Rate: Tffd700{Te6edf3resultTb4b4b4[Ta5d6ff'Ta5d6ffdata_rateTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fflink_budget_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffLink Budget: Tffd700{Te6edf3resultTb4b4b4[Ta5d6ff'Ta5d6fflink_budgetTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsensitivity_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffSensitivity: Tffd700{Te6edf3resultTb4b4b4[Ta5d6ff'Ta5d6ffsensitivityTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff"Tb4b4b4)

Tff7b72except Tb4b4b4(Tf85149ValueErrorTb4b4b4, Tf85149KeyErrorTb4b4b4, Tf85149TypeErrorTb4b4b4) Tff7b72as Te6edf3eTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdata_rate_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffData Rate: Waiting for parameters...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fflink_budget_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffLink Budget: Waiting for valid parameters...Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsensitivity_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffSensitivity: Waiting for parameters...Ta5d6ff"Tb4b4b4)

T8b949e### INTERFACE FIELDS ###
Te6edf3COMMON_INTERFACE_OPTIONS Tff7b72= Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnetwork_nameTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffVirtual Network Name: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOptional virtual network nameTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpassphraseTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffIFAC Passphrase: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffIFAC authentication passphraseTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffifac_sizeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffIFAC Size: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff8 - 512Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffInferred Bitrate: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAutomatically determinedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]

Te6edf3INTERFACE_FIELDS Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflisten_onTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffListen On: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 0.0.0.0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeviceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDevice: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., eth0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffremoteTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRemote: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., a remote TCPServerInterface locationTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftarget_hostTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTarget Host: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 201:5d78:af73:5caf:a4de:a79f:3278:71e5Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTarget Port: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffprefer_ipv6Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffAutoInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{

Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdevicesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmultilistTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDevices: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff,Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignored_devicesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmultilistTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffIgnored Devices: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff,Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffgroup_idTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffGroup ID: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., my_custom_networkTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdiscovery_scopeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDiscovery Scope: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffNoneTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflinkTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffadminTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsiteTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fforganisationTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffglobalTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffNoneTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ffNoneTa5d6ff" Tff7b72else Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4]
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmultilistTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPeers: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff,Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflisten_ipTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffListen IP: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 0.0.0.0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflisten_portTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffListen Port: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffprefer_ipv6Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPrefer IPv6?Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffi2p_tunneledTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffI2P Tunneled?Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeviceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDevice: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffA specific network device to listen on - e.g. eth0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffTCPClientInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftarget_hostTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTarget Host: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 127.0.0.1Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftarget_portTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTarget Port: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 8080Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffi2p_tunneledTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffI2P Tunneled?Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffkiss_framingTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffKISS Framing?Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffUDPInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflisten_ipTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffListen IP: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 0.0.0.0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflisten_portTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffListen Port: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffforward_ipTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffForward IP: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 255.255.255.255Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffforward_portTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffForward Port: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeviceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDevice: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffA specific network device to listen on - e.g. eth0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPort: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g., 4242Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffrequencyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffFrequency (MHz): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff868.5Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffloatTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Tffa657floatTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72* T79c0ff1000000Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else T79c0ff868500000
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftxpowerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTransmit Power (dBm): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff17Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else T79c0ff17
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbandwidthTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBandwidth (Hz): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff7800Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff10400Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff15600Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff20800Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff31250Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff41700Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff62500Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff125000Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff250000Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff500000Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1625000Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff7800Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspreadingfactorTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSpreading Factor: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff7Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff8Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff9Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff10Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff11Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff12Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff7Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcodingrateTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCoding Rate: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff4:5Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff4:6Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff4:7Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff4:8Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff4:5Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_callsignTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCallsign: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. MYCALL-0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_intervalTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffID Interval (Seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 600Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffairtime_limit_longTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAirtime Limit Long (Seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 1.5Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffairtime_limit_shortTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAirtime Limit Short (Seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 33Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmultitableTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fffrequencyTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffFreq (Hz)Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffloatTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffbandwidthTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBW (Hz)Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff7800Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff10400Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff15600Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff20800Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff31250Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff41700Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff62500Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff125000Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff250000Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff500000Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1625000Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6fftxpowerTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTX (dBm)Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffvportTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffV.PortTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffspreadingfactorTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSFTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffcodingrateTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCRTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3x Tff7b72else Tff7b72None
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3x
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_callsignTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCallsign: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. MYCALL-0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_intervalTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffID Interval (Seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 600Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffSerialInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspeedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSpeed (bps): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 115200Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdatabitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDatabits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 8Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffparityTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffParity: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffstopbitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffStopbits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 1Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffPipeInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcommandTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCommand: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. netcat -l 5757Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffrespawn_delayTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffRespawn Delay (seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 5Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspeedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSpeed (bps): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 115200Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdatabitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDatabits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 8Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffparityTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffParity: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffstopbitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffStopbits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 1Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpreambleTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPreamble (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 150Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftxtailTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTX Tail (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 10Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffslottimeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffslottime (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 20Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpersistenceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPersistence (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 200Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_callsignTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffID Callsign: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. MYCALL-0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffid_intervalTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffID Interval (Seconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 600Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff'Ta5d6ffnumberTa5d6ff'Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffflow_controlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffFlow Control Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffAX25KISSInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcallsignTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCallsign: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. NO1CLLTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffssidTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSSID: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspeedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSpeed (bps): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 115200Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdatabitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDatabits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 8Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffparityTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffParity: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffstopbitsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffStopbits: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 1Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpreambleTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPreamble (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 150Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftxtailTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTX Tail (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 10Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffslottimeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSlottime (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 20Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpersistenceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPersistence (miliseconds): Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffe.g. 200Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffnumberTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657intTb4b4b4(Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffflow_controlTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffFlow Control Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Ta5d6ff"Ta5d6ff" Tff7b72if Te6edf3x Tff7b72== Ta5d6ff"Ta5d6ff" Tff7b72else Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffInterface Type: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffName of custom interface classTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffkeyvaluepairsTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffParameters: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3x
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tb4b4b4[
Tb4b4b4{

Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Tb4b4b4}

T8b949e### INTERFACE WIDGETS ####
Tff7b72class T56d364SelectableInterfaceItemTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parentTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3is_connectedTb4b4b4, Te6edf3is_enabledTb4b4b4, Te6edf3iface_typeTb4b4b4, Te6edf3txTb4b4b4, Te6edf3rxTb4b4b4, Te6edf3iconTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4, Te6edf3iface_optionsTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Tff7b72selfTff7b72.Td2a8ff_selectable Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8fficon Tff7b72= Te6edf3icon
Tff7b72selfTff7b72.Td2a8ffname Tff7b72= Te6edf3name
Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72= Te6edf3is_connected
Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72= Te6edf3is_enabled
Tff7b72selfTff7b72.Td2a8ffiface_options Tff7b72= Te6edf3iface_options


Tff7b72if Te6edf3is_enabledTb4b4b4:
Te6edf3enabled_txt Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffEnabledTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3enabled_txt Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffDisabledTa5d6ff"Tb4b4b4)

Tff7b72if Te6edf3is_connectedTb4b4b4:
Te6edf3connected_txt Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffConnectedTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3connected_txt Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffDisconnectedTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffselection_txt Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftitle_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3iconTffd700}Ta5d6ff Tffd700{Te6edf3nameTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4)

Te6edf3title_content Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff4Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffselection_txtTb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8fftitle_widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fftx_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3txTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3rxTb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffstatus_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3enabled_txtTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconnection_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3connected_txtTb4b4b4)

Te6edf3rows Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffStatus: Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff10Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffstatus_widgetTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff3Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff | Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffconnection_widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffType:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3iface_typeTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4,

Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTX:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff15Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftx_widgetTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRX:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffrx_widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Tb4b4b4]

Te6edf3pile_contents Tff7b72= Tb4b4b4[Te6edf3title_contentTb4b4b4] Tff7b72+ Te6edf3rows

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3pile_contentsTb4b4b4)

Te6edf3padded_body Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(
Te6edf3padded_bodyTb4b4b4,
Te6edf3titleTff7b72=Tff7b72NoneTb4b4b4,
T8b949e#todo
Te6edf3tlcornerTff7b72=Ta5d6ff"Ta5d6ff╭Ta5d6ff"Tb4b4b4, Te6edf3tlineTff7b72=Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4,
Te6edf3trcornerTff7b72=Ta5d6ff"Ta5d6ff╮Ta5d6ff"Tb4b4b4, Te6edf3llineTff7b72=Ta5d6ff"Ta5d6ff│Ta5d6ff"Tb4b4b4,
Te6edf3rlineTff7b72=Ta5d6ff"Ta5d6ff│Ta5d6ff"Tb4b4b4, Te6edf3blcornerTff7b72=Ta5d6ff"Ta5d6ff╰Ta5d6ff"Tb4b4b4,
Te6edf3blineTff7b72=Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4, Te6edf3brcornerTff7b72=Ta5d6ff"Ta5d6ff╯Ta5d6ff"
Tb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3boxTb4b4b4)

Tff7b72def Td2a8ffupdate_status_displayTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabledTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstatus_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffEnabledTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstatus_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffDisabledTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffselectableTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72True

Tff7b72def Td2a8ffrenderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3focusTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffselection_txtTff7b72.Td2a8ffset_textTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff'Ta5d6ffselectedTa5d6ff'Tb4b4b4] Tff7b72if Te6edf3focus Tff7b72else Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff'Ta5d6ffunselectedTa5d6ff'Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3focusTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftitle_widgetTff7b72.Td2a8ffset_textTb4b4b4(
Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_title_selectedTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTff7b72.Td2a8fficonTffd700}Ta5d6ff Tffd700{Tff7b72selfTff7b72.Td2a8ffnameTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftitle_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTff7b72.Td2a8fficonTffd700}Ta5d6ff Tffd700{Tff7b72selfTff7b72.Td2a8ffnameTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffrenderTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3focusTff7b72=Te6edf3focusTb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff"Tb4b4b4:
Te6edf3listbox Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ff_original_widget
Te6edf3walker Tff7b72= Te6edf3listboxTff7b72.Td2a8ffbody

Te6edf3interface_items Tff7b72= Tb4b4b4[Te6edf3i Tff7b72for Te6edf3iTb4b4b4, Te6edf3item Tff7b72in Tffa657enumerateTb4b4b4(Te6edf3walkerTb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3itemTb4b4b4, Te6edf3SelectableInterfaceItemTb4b4b4)Tb4b4b4]

Tff7b72if Te6edf3interface_items Tff7b72and Te6edf3walkerTb4b4b4[Te6edf3listboxTff7b72.Td2a8fffocus_positionTb4b4b4] Tff7b72is Tff7b72self Tff7b72and \
Te6edf3listboxTff7b72.Td2a8fffocus_position Tff7b72== Te6edf3interface_itemsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffheaderTa5d6ff"
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffenterTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffswitch_to_show_interfaceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffnameTb4b4b4)
Tff7b72return Tff7b72None
Tff7b72return Te6edf3key

Tff7b72def Td2a8ffupdate_statsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3txTb4b4b4, Te6edf3rxTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftx_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3txTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3rxTb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72class T56d364InterfaceOptionItemTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parent_displayTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent_display Tff7b72= Te6edf3parent_display
Tff7b72selfTff7b72.Td2a8fflabel Tff7b72= Te6edf3label
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Te6edf3value
Tff7b72selfTff7b72.Td2a8ff_selectable Tff7b72= Tff7b72True

Te6edf3text_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3labelTb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3text_widgetTb4b4b4, Ta5d6ff"Ta5d6fflist_normalTa5d6ff"Tb4b4b4, Te6edf3focus_mapTff7b72=Ta5d6ff"Ta5d6fflist_focusTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffselectableTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72True

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffenterTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent_displayTff7b72.Td2a8ffdismiss_dialogTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparent_displayTff7b72.Td2a8ffswitch_to_add_interfaceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffvalueTb4b4b4)
Tff7b72return Tff7b72None
Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72class T56d364InterfaceBandwidthChartTb4b4b4:

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3history_lengthTff7b72=T79c0ff60Tb4b4b4, Te6edf3glyphsetTff7b72=Ta5d6ff"Ta5d6ffunicodeTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhistory_length Tff7b72= Te6edf3history_length
Tff7b72selfTff7b72.Td2a8ffglyphset Tff7b72= Te6edf3glyphset
Tff7b72selfTff7b72.Td2a8ffrx_rates Tff7b72= Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72* Te6edf3history_length
Tff7b72selfTff7b72.Td2a8fftx_rates Tff7b72= Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72* Te6edf3history_length

Tff7b72selfTff7b72.Td2a8ffprev_rx Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffprev_tx Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffprev_time Tff7b72= Tff7b72None

Tff7b72selfTff7b72.Td2a8ffmax_rx_rate Tff7b72= T79c0ff1
Tff7b72selfTff7b72.Td2a8ffmax_tx_rate Tff7b72= T79c0ff1

Tff7b72selfTff7b72.Td2a8fffirst_update Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffinitialization_complete Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffstabilization_updates Tff7b72= T79c0ff2
Tff7b72selfTff7b72.Td2a8ffupdate_count Tff7b72= T79c0ff0

Tff7b72selfTff7b72.Td2a8ffpeak_rx_for_display Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffpeak_tx_for_display Tff7b72= T79c0ff0

Tff7b72def Td2a8ffupdateTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3rx_bytesTb4b4b4, Te6edf3tx_bytesTb4b4b4)Tb4b4b4:
Te6edf3current_time Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffprev_rx Tff7b72is Tff7b72None Tff7b72or Tff7b72selfTff7b72.Td2a8fffirst_updateTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprev_rx Tff7b72= Te6edf3rx_bytes
Tff7b72selfTff7b72.Td2a8ffprev_tx Tff7b72= Te6edf3tx_bytes
Tff7b72selfTff7b72.Td2a8ffprev_time Tff7b72= Te6edf3current_time
Tff7b72selfTff7b72.Td2a8fffirst_update Tff7b72= Tff7b72False
Tff7b72return

Te6edf3time_delta Tff7b72= Tffa657maxTb4b4b4(T79c0ff0.1Tb4b4b4, Te6edf3current_time Tff7b72- Tff7b72selfTff7b72.Td2a8ffprev_timeTb4b4b4)

Te6edf3rx_delta Tff7b72= Tffa657maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3rx_bytes Tff7b72- Tff7b72selfTff7b72.Td2a8ffprev_rxTb4b4b4) Tff7b72/ Te6edf3time_delta
Te6edf3tx_delta Tff7b72= Tffa657maxTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3tx_bytes Tff7b72- Tff7b72selfTff7b72.Td2a8ffprev_txTb4b4b4) Tff7b72/ Te6edf3time_delta

Tff7b72selfTff7b72.Td2a8ffprev_rx Tff7b72= Te6edf3rx_bytes
Tff7b72selfTff7b72.Td2a8ffprev_tx Tff7b72= Te6edf3tx_bytes
Tff7b72selfTff7b72.Td2a8ffprev_time Tff7b72= Te6edf3current_time

Tff7b72selfTff7b72.Td2a8ffupdate_count Tff7b72+Tff7b72= T79c0ff1

Tff7b72selfTff7b72.Td2a8ffrx_ratesTff7b72.Td2a8ffpopTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_ratesTff7b72.Td2a8ffpopTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_ratesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3rx_deltaTff7b72*T79c0ff8Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_ratesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3tx_deltaTff7b72*T79c0ff8Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffupdate_count Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ffstabilization_updatesTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinitialization_complete Tff7b72= Tff7b72True

Tff7b72selfTff7b72.Td2a8ffpeak_rx_for_display Tff7b72= Tffa657maxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpeak_rx_for_displayTb4b4b4, Te6edf3rx_deltaTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffpeak_tx_for_display Tff7b72= Tffa657maxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffpeak_tx_for_displayTb4b4b4, Te6edf3tx_deltaTb4b4b4)


Te6edf3current_rx_max Tff7b72= Tffa657maxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffrx_ratesTb4b4b4)
Te6edf3current_tx_max Tff7b72= Tffa657maxTb4b4b4(Tff7b72selfTff7b72.Td2a8fftx_ratesTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffmax_rx_rate Tff7b72= Tffa657maxTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3current_rx_maxTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmax_tx_rate Tff7b72= Tffa657maxTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3current_tx_maxTb4b4b4)

Tff7b72def Td2a8ffget_chartsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3heightTff7b72=T79c0ff8Tb4b4b4)Tb4b4b4:
Te6edf3chart Tff7b72= Te6edf3AsciiChartTb4b4b4(Te6edf3glyphsetTff7b72=Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4)

Te6edf3rx_data Tff7b72= Tff7b72selfTff7b72.Td2a8ffrx_ratesTff7b72.Td2a8ffcopyTb4b4b4(Tb4b4b4)
Te6edf3tx_data Tff7b72= Tff7b72selfTff7b72.Td2a8fftx_ratesTff7b72.Td2a8ffcopyTb4b4b4(Tb4b4b4)

Te6edf3peak_rx Tff7b72= Tff7b72selfTff7b72.Td2a8ffpeak_rx_for_display Tff7b72if Tff7b72selfTff7b72.Td2a8ffinitialization_complete Tff7b72else T79c0ff0
Te6edf3peak_tx Tff7b72= Tff7b72selfTff7b72.Td2a8ffpeak_tx_for_display Tff7b72if Tff7b72selfTff7b72.Td2a8ffinitialization_complete Tff7b72else T79c0ff0

Te6edf3peak_rx_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3peak_rxTff7b72*T79c0ff8Tb4b4b4)
Te6edf3peak_tx_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3peak_txTff7b72*T79c0ff8Tb4b4b4)

Te6edf3rx_chart Tff7b72= Te6edf3chartTff7b72.Td2a8ffplotTb4b4b4(
Tb4b4b4[Te6edf3rx_dataTb4b4b4]Tb4b4b4,
Tb4b4b4{
Ta5d6ff'Ta5d6ffheightTa5d6ff'Tb4b4b4: Te6edf3heightTb4b4b4,
Ta5d6ff'Ta5d6ffformatTa5d6ff'Tb4b4b4: Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4,
Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffmax_rx_rate Tff7b72* T79c0ff1.1Tb4b4b4,
Tb4b4b4}
Tb4b4b4)

Te6edf3tx_chart Tff7b72= Te6edf3chartTff7b72.Td2a8ffplotTb4b4b4(
Tb4b4b4[Te6edf3tx_dataTb4b4b4]Tb4b4b4,
Tb4b4b4{
Ta5d6ff'Ta5d6ffheightTa5d6ff'Tb4b4b4: Te6edf3heightTb4b4b4,
Ta5d6ff'Ta5d6ffformatTa5d6ff'Tb4b4b4: Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4,
Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffmax_tx_rate Tff7b72* T79c0ff1.1Tb4b4b4,
Tb4b4b4}
Tb4b4b4)

Tff7b72return Te6edf3rx_chartTb4b4b4, Te6edf3tx_chartTb4b4b4, Te6edf3peak_rx_strTb4b4b4, Te6edf3peak_tx_str


Tff7b72class T56d364ResponsiveChartContainerTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3rx_boxTb4b4b4, Te6edf3tx_boxTb4b4b4, Te6edf3min_cols_for_horizontalTff7b72=T79c0ff100Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrx_box Tff7b72= Te6edf3rx_box
Tff7b72selfTff7b72.Td2a8fftx_box Tff7b72= Te6edf3tx_box
Tff7b72selfTff7b72.Td2a8ffmin_cols_for_horizontal Tff7b72= Te6edf3min_cols_for_horizontal

Tff7b72selfTff7b72.Td2a8ffhorizontal_layout Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffrx_boxTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftx_boxTb4b4b4)
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffvertical_layout Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffrx_boxTb4b4b4,
Tff7b72selfTff7b72.Td2a8fftx_box
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fflayout Tff7b72= Te6edf3urwidTff7b72.Td2a8ffWidgetPlaceholderTb4b4b4(Tff7b72selfTff7b72.Td2a8ffhorizontal_layoutTb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8fflayoutTb4b4b4)

Tff7b72def Td2a8ffrenderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3focusTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3maxcol Tff7b72= Te6edf3sizeTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72if Tffa657lenTb4b4b4(Te6edf3sizeTb4b4b4) Tff7b72> T79c0ff0 Tff7b72else T79c0ff0

Tff7b72if Te6edf3maxcol Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ffmin_cols_for_horizontal Tff7b72and Tff7b72selfTff7b72.Td2a8fflayoutTff7b72.Td2a8fforiginal_widget Tff7b72is Tff7b72not Tff7b72selfTff7b72.Td2a8ffhorizontal_layoutTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflayoutTff7b72.Td2a8fforiginal_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffhorizontal_layout
Tff7b72elif Te6edf3maxcol Tff7b72< Tff7b72selfTff7b72.Td2a8ffmin_cols_for_horizontal Tff7b72and Tff7b72selfTff7b72.Td2a8fflayoutTff7b72.Td2a8fforiginal_widget Tff7b72is Tff7b72not Tff7b72selfTff7b72.Td2a8ffvertical_layoutTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflayoutTff7b72.Td2a8fforiginal_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffvertical_layout

Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffrenderTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3focusTb4b4b4)

T8b949e### URWID FILLER ###
Tff7b72class T56d364InterfaceFillerTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8fffiller Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTOPTb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8fffillerTb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl aTa5d6ff"Tb4b4b4:
T8b949e# add interface
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_displayTff7b72.Td2a8ffadd_interfaceTb4b4b4(Tb4b4b4)
Tff7b72return
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl xTa5d6ff"Tb4b4b4:
T8b949e# remove Interface
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_displayTff7b72.Td2a8ffremove_selected_interfaceTb4b4b4(Tb4b4b4)
Tff7b72return
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl eTa5d6ff"Tb4b4b4:
T8b949e# edit interface
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_displayTff7b72.Td2a8ffedit_selected_interfaceTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffctrl wTa5d6ff"Tb4b4b4:
T8b949e# open config file editor
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_displayTff7b72.Td2a8ffopen_config_editorTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None

Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

T8b949e### VIEWS ###
Tff7b72class T56d364AddInterfaceViewTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parentTb4b4b4, Te6edf3iface_typeTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72= Te6edf3iface_type
Tff7b72selfTff7b72.Td2a8fffields Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72selfTff7b72.Td2a8ffport_pile Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffadditional_fields Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72selfTff7b72.Td2a8ffadditional_pile_contents Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffcommon_fields Tff7b72= Tb4b4b4{Tb4b4b4}

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffshortcuts_displayTff7b72.Td2a8ffset_add_interface_shortcutsTb4b4b4(Tb4b4b4)

Te6edf3name_field Tff7b72= Te6edf3FormEditTb4b4b4(
Te6edf3config_keyTff7b72=Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4,
Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ffEnter interface nameTa5d6ff"Tb4b4b4,
Te6edf3validation_typesTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffrequiredTa5d6ff"Tb4b4b4]
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6fflabelTa5d6ff'Tb4b4b4: Ta5d6ff"Ta5d6ffName: Ta5d6ff"Tb4b4b4,
Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4: Te6edf3name_field
Tb4b4b4}

Te6edf3config Tff7b72= Te6edf3INTERFACE_FIELDSTff7b72.Td2a8ffgetTb4b4b4(Te6edf3iface_typeTb4b4b4, Te6edf3INTERFACE_FIELDSTb4b4b4[Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3iface_fields Tff7b72= Tb4b4b4[Te6edf3field Tff7b72for Te6edf3field Tff7b72in Te6edf3config Tff7b72if Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff" Tff7b72in Te6edf3fieldTb4b4b4]

Tff7b72for Te6edf3field Tff7b72in Te6edf3iface_fieldsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_initialize_fieldTb4b4b4(Te6edf3fieldTb4b4b4)

Tff7b72selfTff7b72.Td2a8ff_initialize_additional_fieldsTb4b4b4(Te6edf3configTb4b4b4)

Tff7b72selfTff7b72.Td2a8ff_initialize_common_fieldsTb4b4b4(Tb4b4b4)

Te6edf3pile_items Tff7b72= Tff7b72selfTff7b72.Td2a8ff_build_form_layoutTb4b4b4(Te6edf3iface_fieldsTb4b4b4)

Te6edf3form_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3pile_itemsTb4b4b4)
Te6edf3form_filler Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3form_pileTb4b4b4, Te6edf3valignTff7b72=Ta5d6ff"Ta5d6fftopTa5d6ff"Tb4b4b4)
Te6edf3form_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(
Te6edf3form_fillerTb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffAdd InterfaceTa5d6ff"Tb4b4b4,
Te6edf3tlcornerTff7b72=Ta5d6ff"Ta5d6ff╭Ta5d6ff"Tb4b4b4, Te6edf3tlineTff7b72=Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4,
Te6edf3trcornerTff7b72=Ta5d6ff"Ta5d6ff╮Ta5d6ff"Tb4b4b4, Te6edf3llineTff7b72=Ta5d6ff"Ta5d6ff│Ta5d6ff"Tb4b4b4,
Te6edf3rlineTff7b72=Ta5d6ff"Ta5d6ff│Ta5d6ff"Tb4b4b4, Te6edf3blcornerTff7b72=Ta5d6ff"Ta5d6ff╰Ta5d6ff"Tb4b4b4,
Te6edf3blineTff7b72=Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4, Te6edf3brcornerTff7b72=Ta5d6ff"Ta5d6ff╯Ta5d6ff"
Tb4b4b4)

Te6edf3background Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSolidFillTb4b4b4(Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffoverlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3top_wTff7b72=Te6edf3form_boxTb4b4b4,
Te6edf3bottom_wTff7b72=Te6edf3backgroundTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=Tb4b4b4(Ta5d6ff'Ta5d6ffrelativeTa5d6ff'Tb4b4b4, T79c0ff85Tb4b4b4)Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=Tb4b4b4(Ta5d6ff'Ta5d6ffrelativeTa5d6ff'Tb4b4b4, T79c0ff85Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffoverlayTb4b4b4)

Tff7b72def Td2a8ff_initialize_fieldTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3fieldTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormDropdownTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3optionsTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3defaultTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormCheckboxTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3stateTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffmultilistTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormMultiListTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffmultitableTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormMultiTableTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3fieldsTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffkeyvaluepairsTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormKeyValuePairsTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormEditTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3edit_textTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)

Te6edf3label Tff7b72= Te6edf3fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3labelTb4b4b4:
Te6edf3label Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3wordTff7b72.Td2a8ffcapitalizeTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3word Tff7b72in Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff_Ta5d6ff'Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff: Ta5d6ff"

Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6fflabelTa5d6ff'Tb4b4b4: Te6edf3labelTb4b4b4,
Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4: Te6edf3widget
Tb4b4b4}

Tff7b72def Td2a8ff_initialize_additional_fieldsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3configTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3field Tff7b72in Te6edf3configTb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3fieldTb4b4b4, Tffa657dictTb4b4b4) Tff7b72and Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff" Tff7b72in Te6edf3fieldTb4b4b4:
Tff7b72for Te6edf3option Tff7b72in Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffadditional_optionsTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72if Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormCheckboxTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3stateTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormDropdownTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3optionsTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3defaultTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffmultilistTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormMultiListTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormEditTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3edit_textTff7b72=Tffa657strTb4b4b4(Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)

Te6edf3label Tff7b72= Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3labelTb4b4b4:
Te6edf3label Tff7b72= Ta5d6ff"Ta5d6ff Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3wordTff7b72.Td2a8ffcapitalizeTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3word Tff7b72in Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff_Ta5d6ff'Tb4b4b4)Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff: Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTb4b4b4[Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6fflabelTa5d6ff'Tb4b4b4: Te6edf3labelTb4b4b4,
Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4: Te6edf3widgetTb4b4b4,
Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4: Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]
Tb4b4b4}

Tff7b72def Td2a8ff_initialize_common_fieldsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8fftransport_enabledTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# Transport mode options
Te6edf3COMMON_INTERFACE_OPTIONSTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffoutgoingTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAllow outgoing trafficTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657boolTb4b4b4(Te6edf3xTb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffInterface Mode: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffullTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffgatewayTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffaccess_pointTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffroamingTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffboundaryTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffullTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3x
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffannounce_capTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeditTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAnnounce Cap: Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDefault: 2.0Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffloatTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4: Tff7b72lambda Te6edf3xTb4b4b4: Tffa657floatTb4b4b4(Te6edf3xTb4b4b4) Tff7b72if Te6edf3xTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72else T79c0ff2.0
Tb4b4b4}
Tb4b4b4]Tb4b4b4)

Tff7b72for Te6edf3option Tff7b72in Te6edf3COMMON_INTERFACE_OPTIONSTb4b4b4:
Tff7b72if Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormCheckboxTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3stateTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elif Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormDropdownTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3optionsTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3defaultTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormEditTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3edit_textTff7b72=Tffa657strTb4b4b4(Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3optionTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTb4b4b4[Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6fflabelTa5d6ff'Tb4b4b4: Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4: Te6edf3widgetTb4b4b4,
Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4: Te6edf3optionTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]
Tb4b4b4}

Tff7b72def Td2a8ff_on_rnode_field_changeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3new_valueTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffrnode_calculatorTa5d6ff'Tb4b4b4) Tff7b72and Tff7b72selfTff7b72.Td2a8ffcalculator_visibleTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrnode_calculatorTff7b72.Td2a8ffupdate_calculationTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ff_build_form_layoutTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_fieldsTb4b4b4)Tb4b4b4:
Te6edf3pile_items Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(
Tb4b4b4(Ta5d6ff"Ta5d6ffform_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffAdd new Tffd700{Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffglyphsetTb4b4b4, Tff7b72selfTff7b72.Td2a8ffiface_typeTb4b4b4)Tffd700}Ta5d6ff Tffd700{Tff7b72selfTff7b72.Td2a8ffiface_typeTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72for Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4] Tff7b72+ Tb4b4b4[Te6edf3fTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4] Tff7b72for Te6edf3f Tff7b72in Te6edf3iface_fieldsTb4b4b4]Tb4b4b4:
Te6edf3field Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Te6edf3keyTb4b4b4]
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]

T8b949e# Special case for multitable and keyvaluepairs - they already have their own layout
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3widgetTb4b4b4, Tb4b4b4(Te6edf3FormMultiTableTb4b4b4, Te6edf3FormKeyValuePairsTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3widgetTb4b4b4)
Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4)Tb4b4b4)
Tff7b72continue

Te6edf3field_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff26Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)
Tb4b4b4]Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffSerialInterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAX25KISSInterfaceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4:
Te6edf3refresh_btn Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffRefresh PortsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffrefresh_portsTb4b4b4)
Te6edf3refresh_btn Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3refresh_btnTb4b4b4, Ta5d6ff"Ta5d6ffbutton_normalTa5d6ff"Tb4b4b4, Te6edf3focus_mapTff7b72=Ta5d6ff"Ta5d6ffbutton_focusTa5d6ff"Tb4b4b4)
Te6edf3refresh_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3refresh_btnTb4b4b4, Te6edf3leftTff7b72=T79c0ff26Tb4b4b4, Te6edf3widthTff7b72=T79c0ff20Tb4b4b4)
Te6edf3field_pileTff7b72.Td2a8ffcontentsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3refresh_rowTb4b4b4, Te6edf3field_pileTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffport_pile Tff7b72= Te6edf3field_pile

Te6edf3pile_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3field_pileTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffmore_options_visible Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffmore_options_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffShow more optionsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8fftoggle_more_optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmore_options_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8ffmore_options_buttonTb4b4b4, Ta5d6ff"Ta5d6ffbutton_normalTa5d6ff"Tb4b4b4, Te6edf3focus_mapTff7b72=Ta5d6ff"Ta5d6ffbutton_focusTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmore_options_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffifac_options_visible Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffifac_options_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffShow IFAC optionsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8fftoggle_ifac_optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffifac_options_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8ffifac_options_buttonTb4b4b4, Ta5d6ff"Ta5d6ffbutton_normalTa5d6ff"Tb4b4b4, Te6edf3focus_mapTff7b72=Ta5d6ff"Ta5d6ffbutton_focusTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffifac_options_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcalculator_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffShow On-Air CalculationsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8fftoggle_calculatorTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcalculator_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcalculator_buttonTb4b4b4, Ta5d6ff"Ta5d6ffbutton_normalTa5d6ff"Tb4b4b4, Te6edf3focus_mapTff7b72=Ta5d6ff"Ta5d6ffbutton_focusTa5d6ff"Tb4b4b4)

Te6edf3save_btn Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffSaveTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffon_saveTb4b4b4)
Te6edf3back_btn Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffCancelTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffon_backTb4b4b4)
Te6edf3button_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3save_btnTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3back_btnTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Te6edf3pile_itemsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffmore_options_buttonTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrnode_calculator Tff7b72= Te6edf3RNodeCalculatorTb4b4b4(Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcalculator_visible Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffcalculator_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)
Te6edf3pile_itemsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffcalculator_buttonTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffcalculator_widgetTb4b4b4,
Tb4b4b4]Tb4b4b4)
Te6edf3pile_itemsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3button_rowTb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72return Te6edf3pile_items

Tff7b72def Td2a8fftoggle_more_optionsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffmore_options_visibleTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffShow more optionsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmore_options_visible Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Te6edf3pile_contents Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTb4b4b4:
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]

Tff7b72if Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3centered_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffpackTa5d6ff'Tb4b4b4, Te6edf3widgetTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Te6edf3field_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3centered_widgetTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3field_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff26Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3widget
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)
Tb4b4b4]Tb4b4b4)

Te6edf3pile_contentsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3field_pileTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffadditional_fields Tff7b72and Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTb4b4b4:
Te6edf3pile_contentsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff─Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTb4b4b4:
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]

Tff7b72if Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcheckboxTa5d6ff"Tb4b4b4:
Te6edf3centered_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffpackTa5d6ff'Tb4b4b4, Te6edf3widgetTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff'Ta5d6ffweightTa5d6ff'Tb4b4b4, T79c0ff1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Te6edf3field_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3centered_widgetTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3field_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff26Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3widget
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)
Tb4b4b4]Tb4b4b4)

Te6edf3pile_contentsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3field_pileTb4b4b4)

Tff7b72if Te6edf3pile_contentsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Te6edf3pile_contentsTb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffNo additional options availableTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)
Tb4b4b4)Tb4b4b4]

Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffHide more optionsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmore_options_visible Tff7b72= Tff7b72True

Tff7b72def Td2a8fftoggle_ifac_optionsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffifac_options_visibleTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffifac_options_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffShow IFAC optionsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffifac_options_visible Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Te6edf3dummy Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffIFAC (Interface Access Codes)Ta5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffifac_options_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3dummyTb4b4b4, Tff7b72selfTff7b72.Td2a8ffmore_options_widgetTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4]
Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffHide IFAC optionsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffifac_options_visible Tff7b72= Tff7b72True

Tff7b72def Td2a8fftoggle_calculatorTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcalculator_visibleTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcalculator_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffShow On-Air CalculationsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcalculator_visible Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Te6edf3calculator_contents Tff7b72= Tb4b4b4[Tff7b72selfTff7b72.Td2a8ffrnode_calculatorTb4b4b4]

Tff7b72selfTff7b72.Td2a8ffcalculator_widgetTff7b72.Td2a8ffcontents Tff7b72= Tb4b4b4[Tb4b4b4(Te6edf3wTb4b4b4, Tff7b72selfTff7b72.Td2a8ffcalculator_widgetTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72for Te6edf3w Tff7b72in Te6edf3calculator_contentsTb4b4b4]

Tff7b72selfTff7b72.Td2a8ffrnode_calculatorTff7b72.Td2a8ffupdate_calculationTb4b4b4(Tb4b4b4)

Te6edf3buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffHide On-Air CalculationsTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcalculator_visible Tff7b72= Tff7b72True

Tff7b72def Td2a8ffrefresh_portsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffport_pile Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
T8b949e# Get fresh port config
Te6edf3port_field Tff7b72= Te6edf3get_port_fieldTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffdropdownTa5d6ff"Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormDropdownTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3labelTff7b72=Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3optionsTff7b72=Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6ffoptionsTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3defaultTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3widget Tff7b72= Te6edf3FormEditTb4b4b4(
Te6edf3config_keyTff7b72=Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6ffconfig_keyTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3captionTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3edit_textTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3placeholderTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffplaceholderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3validation_typesTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffvalidationTa5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3transformTff7b72=Te6edf3port_fieldTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftransformTa5d6ff"Tb4b4b4)
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6fflabelTa5d6ff'Tb4b4b4: Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4: Te6edf3widget
Tb4b4b4}

Te6edf3columns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff26Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Te6edf3port_fieldTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3widget
Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffport_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3columnsTb4b4b4, Tff7b72selfTff7b72.Td2a8ffport_pileTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffport_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3widgetTff7b72.Td2a8fferror_widgetTb4b4b4, Te6edf3leftTff7b72=T79c0ff24Tb4b4b4)Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffport_pileTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffvalidate_allTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3all_valid Tff7b72= Tff7b72True

T8b949e# validate main fields
Tff7b72for Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffvaluesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffvalidateTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3all_valid Tff7b72= Tff7b72False

T8b949e# validate additional iface fields
Tff7b72for Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTff7b72.Td2a8ffvaluesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffvalidateTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3all_valid Tff7b72= Tff7b72False

T8b949e# validate common fields
Tff7b72for Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTff7b72.Td2a8ffvaluesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffvalidateTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3all_valid Tff7b72= Tff7b72False

Tff7b72return Te6edf3all_valid

Tff7b72def Td2a8ffon_saveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Te6edf3all_valid Tff7b72= Tff7b72selfTff7b72.Td2a8ffvalidate_allTb4b4b4(Tb4b4b4)

Te6edf3name Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ffUntitled interfaceTa5d6ff"

Te6edf3existing_interfaces Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]
Tff7b72if Te6edf3name Tff7b72in Te6edf3existing_interfacesTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferror Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffInterface name Ta5d6ff'Tffd700{Te6edf3nameTffd700}Ta5d6ff'Ta5d6ff already existsTa5d6ff"
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferrorTb4b4b4)Tb4b4b4)
Te6edf3all_valid Tff7b72= Tff7b72False

Tff7b72if Tff7b72not Te6edf3all_validTb4b4b4:
Tff7b72return

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"Tb4b4b4:
Te6edf3custom_type Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Te6edf3interface_config Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Te6edf3custom_typeTb4b4b4,
Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4: Tff7b72True
Tb4b4b4}
Tff7b72elseTb4b4b4:
Te6edf3interface_config Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffiface_typeTb4b4b4,
Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4: Tff7b72True
Tb4b4b4}

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3field_key Tff7b72not Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3field_key Tff7b72== Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff" Tff7b72and Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff" Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4,
Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3subnameTb4b4b4, Te6edf3subconfig Tff7b72in Te6edf3valueTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3interface_configTb4b4b4[Ta5d6fffTa5d6ff"Tffd700{Te6edf3subnameTffd700}Ta5d6ff"Tb4b4b4] Tff7b72= Te6edf3subconfig
Tff7b72elif Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3interface_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff" Tff7b72and Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4:
Te6edf3custom_params Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3custom_paramsTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3param_keyTb4b4b4, Te6edf3param_value Tff7b72in Te6edf3custom_paramsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3interface_configTb4b4b4[Te6edf3param_keyTb4b4b4] Tff7b72= Te6edf3param_value

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3interface_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3interface_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72tryTb4b4b4:
Te6edf3interfaces Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]
Te6edf3interfacesTb4b4b4[Te6edf3nameTb4b4b4] Tff7b72= Te6edf3interface_config
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTff7b72.Td2a8ffwriteTb4b4b4(Tb4b4b4)

Te6edf3display_type Tff7b72= Te6edf3custom_type Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff" Tff7b72else Tff7b72selfTff7b72.Td2a8ffiface_type

Te6edf3new_item Tff7b72= Te6edf3SelectableInterfaceItemTb4b4b4(
Te6edf3parentTff7b72=Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4,
Te6edf3nameTff7b72=Te6edf3nameTb4b4b4,
Te6edf3is_connectedTff7b72=Tff7b72FalseTb4b4b4, T8b949e# will always be false until restart
Te6edf3is_enabledTff7b72=Tff7b72TrueTb4b4b4,
Te6edf3iface_typeTff7b72=Te6edf3display_typeTb4b4b4,
Te6edf3txTff7b72=T79c0ff0Tb4b4b4,
Te6edf3rxTff7b72=T79c0ff0Tb4b4b4,
Te6edf3iconTff7b72=Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffglyphsetTb4b4b4, Te6edf3display_typeTb4b4b4)Tb4b4b4,
Te6edf3iface_optionsTff7b72=Te6edf3interface_config
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterface_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3new_itemTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ff_rebuild_listTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffshow_messageTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInterface Tffd700{Te6edf3nameTffd700}Ta5d6ff added. Restart NomadNet to start using this interfaceTa5d6ff"Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError saving interface: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshow_messageTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffon_backTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffswitch_to_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_messageTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3messageTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffNoticeTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffswitch_to_listTb4b4b4(Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3messageTb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Te6edf3title
Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterfaces_displayTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff100Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff8Tb4b4b4,
Te6edf3min_widthTff7b72=T79c0ff1Tb4b4b4,
Te6edf3min_heightTff7b72=T79c0ff1
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffwidget Tff7b72= Te6edf3overlay
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)


Tff7b72class T56d364EditInterfaceViewTb4b4b4(Te6edf3AddInterfaceViewTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parentTb4b4b4, Te6edf3iface_nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Tff7b72selfTff7b72.Td2a8ffiface_name Tff7b72= Te6edf3iface_name

Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72= Te6edf3parentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4[Te6edf3iface_nameTb4b4b4]
Te6edf3config_type Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUnknownTa5d6ff"Tb4b4b4)

T8b949e# check if this is a custom interface type
Te6edf3known_types Tff7b72= Tffa657listTb4b4b4(Te6edf3INTERFACE_FIELDSTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3config_type Tff7b72not Tff7b72in Te6edf3known_typesTb4b4b4:
Tff7b72selfTff7b72.Td2a8fforiginal_type Tff7b72= Te6edf3config_type
Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72= Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fforiginal_type Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72= Te6edf3config_type

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3parentTb4b4b4, Tff7b72selfTff7b72.Td2a8ffiface_typeTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffoverlayTff7b72.Td2a8fftop_wTff7b72.Td2a8fftitle_widgetTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffEdit Interface: Tffd700{Te6edf3iface_nameTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ff_populate_form_fieldsTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ff_populate_form_fieldsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]Tff7b72.Td2a8ffedit_text Tff7b72= Tff7b72selfTff7b72.Td2a8ffiface_name

Tff7b72if Tff7b72selfTff7b72.Td2a8fforiginal_type Tff7b72and Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"Tb4b4b4:
Tff7b72if Ta5d6ff"Ta5d6fftypeTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffedit_text Tff7b72= Tff7b72selfTff7b72.Td2a8fforiginal_type

Tff7b72if Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4:
Te6edf3custom_params Tff7b72= Tb4b4b4{Tb4b4b4}
Te6edf3standard_keys Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdescriptionTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnetwork_nameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpassphraseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffifac_sizeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffoutgoingTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffannounce_capTa5d6ff"Tb4b4b4]

Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72not Tff7b72in Te6edf3standard_keysTb4b4b4:
Te6edf3custom_paramsTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffset_valueTb4b4b4(Te6edf3custom_paramsTb4b4b4)

Tff7b72for Te6edf3keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72not Tff7b72in Tb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffcustom_parametersTa5d6ff'Tb4b4b4]Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]

Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff" Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3FormMultiTableTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_populate_subinterfacesTb4b4b4(Te6edf3widgetTb4b4b4)
Tff7b72continue

Tff7b72if Te6edf3key Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4:
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4[Te6edf3keyTb4b4b4]

Tff7b72if Te6edf3key Tff7b72== Ta5d6ff'Ta5d6fffrequencyTa5d6ff'Tb4b4b4:
Te6edf3value Tff7b72= Tffa657floatTb4b4b4(Te6edf3valueTb4b4b4) Tff7b72/ T79c0ff1000000
Te6edf3value Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3valueTffd700:Ta5d6ff.6fTffd700}Ta5d6ff"Tff7b72.Td2a8ffrstripTb4b4b4(Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffrstripTb4b4b4(Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4) Tff7b72if Ta5d6ff'Ta5d6ff.Ta5d6ff' Tff7b72in Ta5d6fffTa5d6ff"Tffd700{Te6edf3valueTffd700:Ta5d6ff.6fTffd700}Ta5d6ff" Tff7b72else Ta5d6fffTa5d6ff"Tffd700{Te6edf3valueTffd700}Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ff_set_field_valueTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3valueTb4b4b4)

Tff7b72for Te6edf3keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_set_field_valueTb4b4b4(Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4)

Tff7b72for Te6edf3keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_set_field_valueTb4b4b4(Te6edf3fieldTb4b4b4[Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4]Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4)

Tff7b72def Td2a8ff_set_field_valueTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff'Ta5d6ffedit_textTa5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffedit_text Tff7b72= Tffa657strTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72elif Tffa657hasattrTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff'Ta5d6ffset_stateTa5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3checkbox_state Tff7b72= Te6edf3value Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657boolTb4b4b4) Tff7b72else Te6edf3valueTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72not Tff7b72in Tb4b4b4(
Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffoffTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffnoTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4)
Te6edf3widgetTff7b72.Td2a8ffset_stateTb4b4b4(Te6edf3checkbox_stateTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3FormDropdownTb4b4b4)Tb4b4b4:
Te6edf3str_value Tff7b72= Tffa657strTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3str_value Tff7b72in Te6edf3widgetTff7b72.Td2a8ffoptionsTb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffselected Tff7b72= Te6edf3str_value
Te6edf3widgetTff7b72.Td2a8ffmain_buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_textTb4b4b4(Te6edf3str_valueTb4b4b4)
Tff7b72elseTb4b4b4:
T8b949e# Try to match after transform
Tff7b72for Te6edf3opt Tff7b72in Te6edf3widgetTff7b72.Td2a8ffoptionsTb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3widgetTff7b72.Td2a8fftransformTb4b4b4(Te6edf3optTb4b4b4) Tff7b72== Te6edf3valueTb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffselected Tff7b72= Te6edf3opt
Te6edf3widgetTff7b72.Td2a8ffmain_buttonTff7b72.Td2a8ffbase_widgetTff7b72.Td2a8ffset_textTb4b4b4(Te6edf3optTb4b4b4)
Tff7b72break
Tff7b72exceptTb4b4b4:
Tff7b72pass
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3FormMultiListTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_populate_multilistTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3valueTb4b4b4)

Tff7b72def Td2a8ff_populate_multilistTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3items Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3items Tff7b72= Tb4b4b4[Te6edf3itemTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3item Tff7b72in Te6edf3valueTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff'Ta5d6ff,Ta5d6ff'Tb4b4b4) Tff7b72if Te6edf3itemTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4]
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657listTb4b4b4)Tb4b4b4:
Te6edf3items Tff7b72= Te6edf3value

Tff7b72while Tffa657lenTb4b4b4(Te6edf3widgetTff7b72.Td2a8ffentriesTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffremove_entryTb4b4b4(Tff7b72NoneTb4b4b4, Te6edf3widgetTff7b72.Td2a8ffentriesTb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3itemsTb4b4b4:
Te6edf3first_entry Tff7b72= Te6edf3widgetTff7b72.Td2a8ffentriesTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3first_edit Tff7b72= Te6edf3first_entryTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657lenTb4b4b4(Te6edf3itemsTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3first_editTff7b72.Td2a8ffedit_text Tff7b72= Te6edf3itemsTb4b4b4[T79c0ff0Tb4b4b4]

Tff7b72for Te6edf3i Tff7b72in Tffa657rangeTb4b4b4(T79c0ff1Tb4b4b4, Tffa657lenTb4b4b4(Te6edf3itemsTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffadd_entryTb4b4b4(Tff7b72NoneTb4b4b4)
Te6edf3entry Tff7b72= Te6edf3widgetTff7b72.Td2a8ffentriesTb4b4b4[Te6edf3iTb4b4b4]
Te6edf3edit_widget Tff7b72= Te6edf3entryTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3edit_widgetTff7b72.Td2a8ffedit_text Tff7b72= Te6edf3itemsTb4b4b4[Te6edf3iTb4b4b4]

Tff7b72def Td2a8ff_populate_subinterfacesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3widgetTb4b4b4)Tb4b4b4:
Te6edf3subinterfaces Tff7b72= Tb4b4b4{Tb4b4b4}

Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3keyTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff'Ta5d6ff[[[Ta5d6ff'Tb4b4b4) Tff7b72and Te6edf3keyTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff'Ta5d6ff]]]Ta5d6ff'Tb4b4b4)Tb4b4b4:
Te6edf3clean_key Tff7b72= Te6edf3keyTb4b4b4[T79c0ff3Tb4b4b4:Tff7b72-T79c0ff3Tb4b4b4] T8b949e# removes [[[...]]]
Te6edf3subinterfacesTb4b4b4[Te6edf3clean_keyTb4b4b4] Tff7b72= Te6edf3value
Tff7b72elif Te6edf3key Tff7b72not Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffid_callsignTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffid_intervalTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3subinterfacesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72if Te6edf3subinterfacesTb4b4b4:
Te6edf3widgetTff7b72.Td2a8ffset_valueTb4b4b4(Te6edf3subinterfacesTb4b4b4)

Tff7b72def Td2a8ffon_saveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffvalidate_allTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return

Te6edf3new_name Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4) Tff7b72or Tff7b72selfTff7b72.Td2a8ffiface_name

Tff7b72if Te6edf3new_name Tff7b72!= Tff7b72selfTff7b72.Td2a8ffiface_name Tff7b72and Te6edf3new_name Tff7b72in Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferror Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffInterface name Ta5d6ff'Tffd700{Te6edf3new_nameTffd700}Ta5d6ff'Ta5d6ff already existsTa5d6ff"
Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferror_widgetTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fferrorTb4b4b4)Tb4b4b4)
Tff7b72return

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"Tb4b4b4:
Te6edf3interface_type Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6fftypeTa5d6ff'Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffwidgetTa5d6ff'Tb4b4b4)Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3interface_type Tff7b72= Tff7b72selfTff7b72.Td2a8ffiface_type

Te6edf3updated_config Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Te6edf3interface_typeTb4b4b4,
Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4: Tff7b72True
Tb4b4b4}

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3field_key Tff7b72not Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3updated_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72if Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff" Tff7b72and Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4:
Te6edf3custom_params Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6ffcustom_parametersTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3custom_paramsTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3param_keyTb4b4b4, Te6edf3param_value Tff7b72in Te6edf3custom_paramsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3updated_configTb4b4b4[Te6edf3param_keyTb4b4b4] Tff7b72= Te6edf3param_value

Tff7b72elif Tff7b72selfTff7b72.Td2a8ffiface_type Tff7b72== Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff" Tff7b72and Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4:
Te6edf3subinterfaces Tff7b72= Tff7b72selfTff7b72.Td2a8fffieldsTb4b4b4[Ta5d6ff"Ta5d6ffsubinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3subnameTb4b4b4, Te6edf3subconfig Tff7b72in Te6edf3subinterfacesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3updated_configTb4b4b4[Te6edf3subnameTb4b4b4] Tff7b72= Te6edf3subconfig

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffadditional_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3updated_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72for Te6edf3field_keyTb4b4b4, Te6edf3field Tff7b72in Tff7b72selfTff7b72.Td2a8ffcommon_fieldsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3widget Tff7b72= Te6edf3fieldTb4b4b4[Ta5d6ff"Ta5d6ffwidgetTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Te6edf3widgetTff7b72.Td2a8ffget_valueTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3updated_configTb4b4b4[Te6edf3widgetTff7b72.Td2a8ffconfig_keyTb4b4b4] Tff7b72= Te6edf3value

Tff7b72tryTb4b4b4:
Te6edf3interfaces Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]

Tff7b72if Te6edf3new_name Tff7b72!= Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4:
Tff7b72del Te6edf3interfacesTb4b4b4[Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4]
Te6edf3interfacesTb4b4b4[Te6edf3new_nameTb4b4b4] Tff7b72= Te6edf3updated_config

Tff7b72for Te6edf3iTb4b4b4, Te6edf3item Tff7b72in Tffa657enumerateTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterface_itemsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3itemTff7b72.Td2a8ffname Tff7b72== Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterface_itemsTb4b4b4[Te6edf3iTb4b4b4]Tff7b72.Td2a8ffname Tff7b72= Te6edf3new_name
Tff7b72break
Tff7b72elseTb4b4b4:
Te6edf3interfacesTb4b4b4[Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4] Tff7b72= Te6edf3updated_config

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTff7b72.Td2a8ffwriteTb4b4b4(Tb4b4b4)

Te6edf3display_type Tff7b72= Te6edf3interface_type

Tff7b72for Te6edf3item Tff7b72in Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterface_itemsTb4b4b4:
Tff7b72if Te6edf3itemTff7b72.Td2a8ffname Tff7b72== Te6edf3new_nameTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffiface_type Tff7b72= Te6edf3display_type
Tff7b72break

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ff_rebuild_listTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshow_messageTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInterface Tffd700{Te6edf3new_nameTffd700}Ta5d6ff updated. Restart NomadNet for these changes to take effectTa5d6ff"Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError saving interface: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshow_messageTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError updating interface: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4)


Tff7b72class T56d364ShowInterfaceTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3parentTb4b4b4, Te6edf3iface_nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparent Tff7b72= Te6edf3parent
Tff7b72selfTff7b72.Td2a8ffiface_name Tff7b72= Te6edf3iface_name
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffg Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

T8b949e# get config
Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4[Te6edf3iface_nameTb4b4b4]
Te6edf3iface_type Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUnknownTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffshortcuts_displayTff7b72.Td2a8ffset_show_interface_shortcutsTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffconfig_rows Tff7b72= Tb4b4b4[Tb4b4b4]

Te6edf3screen_colsTb4b4b4, Te6edf3_ Tff7b72= Te6edf3_get_cols_rowsTb4b4b4(Tb4b4b4)
Te6edf3margin Tff7b72= T79c0ff22
Tff7b72if Te6edf3screen_cols Tff7b72>Tff7b72= T79c0ff145Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhistory_length Tff7b72= Te6edf3screen_colsTff7b72/Tff7b72/T79c0ff2Tff7b72-Te6edf3margin
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhistory_length Tff7b72= Te6edf3screen_colsTff7b72-Tb4b4b4(Te6edf3marginTff7b72+T79c0ff2Tb4b4b4)

T8b949e# get interface stats
Te6edf3interface_stats Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffinterface_stats
Te6edf3stats_lookup Tff7b72= Tb4b4b4{Te6edf3ifaceTb4b4b4[Ta5d6ff'Ta5d6ffshort_nameTa5d6ff'Tb4b4b4]Tb4b4b4: Te6edf3iface Tff7b72for Te6edf3iface Tff7b72in Te6edf3interface_statsTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4}
Tff7b72selfTff7b72.Td2a8ffstats Tff7b72= Te6edf3stats_lookupTff7b72.Td2a8ffgetTb4b4b4(Te6edf3iface_nameTb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fftx Tff7b72= Tff7b72selfTff7b72.Td2a8ffstatsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx Tff7b72= Tff7b72selfTff7b72.Td2a8ffstatsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72= Tff7b72selfTff7b72.Td2a8ffstatsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72= Tb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72!= Ta5d6ff'Ta5d6fffalseTa5d6ff' Tff7b72and
Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72!= Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4)

Te6edf3header_content Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffInterface: Tffd700{Te6edf3iface_nameTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff=Ta5d6ff"Tb4b4b4)
Tb4b4b4]
Te6edf3header Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3header_contentTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffedit_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffEditTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffon_editTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffback_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffBackTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffon_backTb4b4b4)

Tff7b72selfTff7b72.Td2a8fftoggle_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(
Ta5d6ff"Ta5d6ffDisableTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffEnableTa5d6ff"Tb4b4b4,
Te6edf3on_pressTff7b72=Tff7b72selfTff7b72.Td2a8ffon_toggle_enabled
Tb4b4b4)

Te6edf3button_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.3Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffback_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.05Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.3Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftoggle_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.05Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.3Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffedit_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Te6edf3footer_content Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff=Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3button_row
Tb4b4b4]
Te6edf3footer Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3footer_contentTb4b4b4)

T8b949e# status widgets
Tff7b72selfTff7b72.Td2a8ffstatus_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffEnabledTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffDisabledTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffstatus_indicator Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff'Ta5d6ffselectedTa5d6ff'Tb4b4b4] Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[
Ta5d6ff'Ta5d6ffunselectedTa5d6ff'Tb4b4b4]Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffconnection_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72else Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffConnectedTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72else Ta5d6ff"Ta5d6ffDisconnectedTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffinfo_rows Tff7b72= Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffType:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffglyphsetTb4b4b4, Te6edf3iface_typeTb4b4b4)Tffd700}Ta5d6ff Tffd700{Te6edf3iface_typeTffd700}Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffStatus:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff4Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffstatus_indicatorTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff8Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffstatus_textTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff3Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff | Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffconnection_textTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)
Tb4b4b4]

Tff7b72selfTff7b72.Td2a8fftx_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Tff7b72selfTff7b72.Td2a8fftxTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffrxTb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffstat_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTX:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff15Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftx_textTb4b4b4)Tb4b4b4,
Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRX:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffrx_textTb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffinfo_rowsTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffstat_rowTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinfo_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffbandwidth_chart Tff7b72= Te6edf3InterfaceBandwidthChartTb4b4b4(Te6edf3history_lengthTff7b72=Tff7b72selfTff7b72.Td2a8ffhistory_lengthTb4b4b4, Te6edf3glyphsetTff7b72=Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffglyphsetTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffbandwidth_chartTff7b72.Td2a8ffupdateTb4b4b4(Tff7b72selfTff7b72.Td2a8ffrxTb4b4b4, Tff7b72selfTff7b72.Td2a8fftxTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffrx_chart_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffLoading RX data...Ta5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffleftTa5d6ff'Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_chart_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffLoading TX data...Ta5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffleftTa5d6ff'Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_peak_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffPeak: 0 B/sTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffrightTa5d6ff'Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_peak_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffPeak: 0 B/sTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffrightTa5d6ff'Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffrx_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8ffrx_chart_textTb4b4b4, Ta5d6ff"Ta5d6ffrxTa5d6ff"Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8ffrx_peak_text
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffRX Traffic (60s)Ta5d6ff"
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fftx_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Tff7b72selfTff7b72.Td2a8fftx_chart_textTb4b4b4, Ta5d6ff"Ta5d6fftxTa5d6ff"Tb4b4b4)Tb4b4b4,
Tff7b72selfTff7b72.Td2a8fftx_peak_text
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffTX Traffic (60s)Ta5d6ff"
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffhorizontal_charts Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffrx_boxTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftx_boxTb4b4b4)
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffvertical_charts Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Tff7b72selfTff7b72.Td2a8ffrx_boxTb4b4b4,
Tff7b72selfTff7b72.Td2a8fftx_box
Tb4b4b4]Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisconnected_message Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffCharts not available - Interface is not connectedTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff"Ta5d6fftopTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdisconnected_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdisconnected_messageTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffBandwidth ChartsTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcharts_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffvertical_charts
Tff7b72selfTff7b72.Td2a8ffis_horizontal Tff7b72= Tff7b72False

Te6edf3screen_colsTb4b4b4, Te6edf3_ Tff7b72= Te6edf3_get_cols_rowsTb4b4b4(Tb4b4b4)
T8b949e# RNS.log(screen_cols)
Tff7b72if Te6edf3screen_cols Tff7b72>Tff7b72= T79c0ff145Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcharts_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffhorizontal_charts
Tff7b72selfTff7b72.Td2a8ffis_horizontal Tff7b72= Tff7b72True

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcharts_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffdisconnected_box

Te6edf3connection_params Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3radio_params Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3network_params Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3ifac_params Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3other_params Tff7b72= Tb4b4b4[Tb4b4b4]

T8b949e# Sort parameters into groups
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# skip empty
Tff7b72if Te6edf3value Tff7b72is Tff7b72None Tff7b72or Te6edf3value Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4:
Tff7b72continue

T8b949e# Skip these keys as their shown elsewhere
Tff7b72if Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4, Ta5d6ff'Ta5d6ffselected_interface_modeTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffnameTa5d6ff'Tb4b4b4]Tb4b4b4:
Tff7b72continue

T8b949e# Connection parameters
Tff7b72elif Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflisten_ipTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflisten_portTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftarget_hostTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftarget_portTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdeviceTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3connection_paramsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)

T8b949e# Radio parameters
Tff7b72elif Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6fffrequencyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbandwidthTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffspreadingfactorTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcodingrateTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftxpowerTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3radio_paramsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)

T8b949e# Network parameters
Tff7b72elif Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffnetwork_nameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffbitrateTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffgroup_idTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmulticast_address_typeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdiscovery_scopeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffannounce_capTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3network_paramsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)

T8b949e# IFAC parameters
Tff7b72elif Te6edf3key Tff7b72in Tb4b4b4[Ta5d6ff"Ta5d6ffpassphraseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffifac_sizeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffifac_netnameTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffifac_netkeyTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3ifac_paramsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)

Tff7b72elseTb4b4b4:
Te6edf3other_paramsTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffcreate_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657boolTb4b4b4)Tb4b4b4:
Te6edf3value_str Tff7b72= Ta5d6ff"Ta5d6ffYesTa5d6ff" Tff7b72if Te6edf3value Tff7b72else Ta5d6ff"Ta5d6ffNoTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6fffrequencyTa5d6ff"Tb4b4b4:
Te6edf3int_value Tff7b72= Tffa657intTb4b4b4(Te6edf3valueTb4b4b4)
Te6edf3value_str Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3int_value Tff7b72/ T79c0ff1000000Tffd700:Ta5d6ff.3fTffd700}Ta5d6ff MHzTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffbandwidthTa5d6ff"Tb4b4b4:
Te6edf3int_value Tff7b72= Tffa657intTb4b4b4(Te6edf3valueTb4b4b4)
Te6edf3value_str Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3int_value Tff7b72/ T79c0ff1000Tffd700:Ta5d6ff.1fTffd700}Ta5d6ff kHzTa5d6ff"
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffpassphraseTa5d6ff"Tb4b4b4:
Te6edf3value_str Tff7b72= Tffa657lenTb4b4b4(Te6edf3valueTb4b4b4)Tff7b72*Ta5d6ff"Ta5d6ff*Ta5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3value_str Tff7b72= Tffa657strTb4b4b4(Te6edf3valueTb4b4b4)
T8b949e# format display keys: "listen_port" => Listen Port
Te6edf3display_key Tff7b72= Te6edf3keyTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff'Ta5d6ff_Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8fftitleTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(T79c0ff18Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffkeyTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Tffd700{Te6edf3display_keyTffd700}Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3value_strTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3connection_paramsTb4b4b4:
Te6edf3connection_paramsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffConnection ParametersTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3connection_paramsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3create_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3radio_paramsTb4b4b4:
Te6edf3radio_paramsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRadio ParametersTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3radio_paramsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3create_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3network_paramsTb4b4b4:
Te6edf3network_paramsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNetwork ParametersTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3network_paramsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3create_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3ifac_paramsTb4b4b4:
Te6edf3ifac_paramsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffIFAC ParametersTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3ifac_paramsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3create_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3other_paramsTb4b4b4:
Te6edf3other_paramsTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3xTb4b4b4: Te6edf3xTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAdditional ParametersTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3other_paramsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3create_param_rowTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffconfig_rowsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffconfig_rowsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffNo additional parametersTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4)

Te6edf3body_content Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3body_contentTff7b72.Td2a8ffextendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinfo_rowsTb4b4b4)
Te6edf3body_contentTff7b72.Td2a8ffappendTb4b4b4(
Tff7b72selfTff7b72.Td2a8ffcharts_widgetTb4b4b4)
Te6edf3body_contentTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Ta5d6ff"Ta5d6ff-Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3body_contentTff7b72.Td2a8ffextendTb4b4b4(Tff7b72selfTff7b72.Td2a8ffconfig_rowsTb4b4b4)

Te6edf3body_pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3body_contentTb4b4b4)
Te6edf3body_padding Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPaddingTb4b4b4(Te6edf3body_pileTb4b4b4, Te6edf3leftTff7b72=T79c0ff2Tb4b4b4, Te6edf3rightTff7b72=T79c0ff2Tb4b4b4)

Te6edf3body Tff7b72= Te6edf3urwidTff7b72.Td2a8ffListBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffSimpleListWalkerTb4b4b4(Tb4b4b4[Te6edf3body_paddingTb4b4b4]Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffframe Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFrameTb4b4b4(
Te6edf3bodyTff7b72=Te6edf3bodyTb4b4b4,
Te6edf3headerTff7b72=Te6edf3headerTb4b4b4,
Te6edf3footerTff7b72=Te6edf3footer
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcontent_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffframeTb4b4b4)

Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffcontent_boxTb4b4b4)

Tff7b72def Td2a8ffupdate_status_displayTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabledTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstatus_indicatorTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff'Ta5d6ffselectedTa5d6ff'Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstatus_textTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffEnabledTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstatus_indicatorTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff'Ta5d6ffunselectedTa5d6ff'Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstatus_textTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffDisabledTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffupdate_connection_displayTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3is_connectedTb4b4b4)Tb4b4b4:
Te6edf3old_connection_state Tff7b72= Tff7b72selfTff7b72.Td2a8ffis_connected
Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72= Te6edf3is_connected

Tff7b72selfTff7b72.Td2a8ffconnection_textTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffconnected_statusTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72else Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffConnectedTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_connected Tff7b72else Ta5d6ff"Ta5d6ffDisconnectedTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72if Te6edf3old_connection_state Tff7b72!= Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Te6edf3body_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTff7b72.Td2a8ffbodyTb4b4b4[T79c0ff0Tb4b4b4]Tff7b72.Td2a8fforiginal_widget

Te6edf3chart_index Tff7b72= Tff7b72None
Tff7b72for Te6edf3iTb4b4b4, Tb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3optionsTb4b4b4) Tff7b72in Tffa657enumerateTb4b4b4(Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Te6edf3widget Tff7b72== Tff7b72selfTff7b72.Td2a8ffhorizontal_charts Tff7b72or
Te6edf3widget Tff7b72== Tff7b72selfTff7b72.Td2a8ffvertical_charts Tff7b72or
Te6edf3widget Tff7b72== Tff7b72selfTff7b72.Td2a8ffdisconnected_boxTb4b4b4)Tb4b4b4:
Te6edf3chart_index Tff7b72= Te6edf3i
Tff7b72break

Tff7b72if Te6edf3chart_index Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Te6edf3new_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffhorizontal_charts Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_horizontal Tff7b72else Tff7b72selfTff7b72.Td2a8ffvertical_charts
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3new_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffdisconnected_box
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False

Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4[Te6edf3chart_indexTb4b4b4] Tff7b72= Tb4b4b4(Te6edf3new_widgetTb4b4b4, Te6edf3body_pileTff7b72.Td2a8ffoptionsTb4b4b4(Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffon_toggle_enabledTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Te6edf3action Tff7b72= Ta5d6ff"Ta5d6ffdisableTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffenableTa5d6ff"

Tff7b72def Td2a8ffon_confirm_yesTb4b4b4(Te6edf3confirm_buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidget

Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72= Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_enabled

Tff7b72selfTff7b72.Td2a8fftoggle_buttonTff7b72.Td2a8ffset_labelTb4b4b4(Ta5d6ff"Ta5d6ffDisableTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffEnableTa5d6ff"Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4[Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffis_enabled
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinterface_configTb4b4b4[Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffis_enabled

Tff7b72tryTb4b4b4:
Te6edf3interfaces Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]

Te6edf3interfacesTb4b4b4[Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_config

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTff7b72.Td2a8ffwriteTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffupdate_status_displayTb4b4b4(Tb4b4b4)

Tff7b72for Te6edf3item Tff7b72in Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffinterface_itemsTb4b4b4:
Tff7b72if Te6edf3itemTff7b72.Td2a8ffname Tff7b72== Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4:
Te6edf3itemTff7b72.Td2a8ffis_enabled Tff7b72= Tff7b72selfTff7b72.Td2a8ffis_enabled
Te6edf3itemTff7b72.Td2a8ffupdate_status_displayTb4b4b4(Tb4b4b4)

Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTb4b4b4, Ta5d6ff'Ta5d6ffloopTa5d6ff'Tb4b4b4) Tff7b72and Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloop Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffdraw_screenTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffshow_restart_required_messageTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshow_error_messageTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError updating interface: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffon_confirm_noTb4b4b4(Te6edf3confirm_buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidget

Te6edf3confirm_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(
Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ffAre you sure you want to Tffd700{Te6edf3actionTffd700}Ta5d6ff the Tffd700{Tff7b72selfTff7b72.Td2a8ffiface_nameTffd700}Ta5d6ff interface?Ta5d6ff"
Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)

Te6edf3yes_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3on_confirm_yesTb4b4b4)
Te6edf3no_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3on_confirm_noTb4b4b4)

Te6edf3buttons_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3yes_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3no_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3confirm_textTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3buttons_row
Tb4b4b4]Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffConfirmTa5d6ff"Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff50Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff7
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Te6edf3overlay

Tff7b72def Td2a8ffshow_restart_required_messageTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidget

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffInterface Tffd700{Tff7b72selfTff7b72.Td2a8ffiface_nameTffd700}Ta5d6ff has been Ta5d6ff" Tff7b72+
Tb4b4b4(Ta5d6ff"Ta5d6ffenabledTa5d6ff" Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_enabled Tff7b72else Ta5d6ff"Ta5d6ffdisabledTa5d6ff"Tb4b4b4) Tff7b72+
Ta5d6ff"Ta5d6ff.Tffea00\nTa5d6ffRestart required for changes to take effect.Ta5d6ff"Tb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"
Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffNoticeTa5d6ff"
Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff50Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff8
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Te6edf3overlay

Tff7b72def Td2a8ffshow_error_messageTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3messageTb4b4b4)Tb4b4b4:

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidget

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Te6edf3messageTb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3dismiss_dialogTb4b4b4)
Tb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffErrorTa5d6ff"
Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff50Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff8
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody Tff7b72= Te6edf3overlay

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff'Ta5d6fftabTa5d6ff'Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6ffbodyTa5d6ff'Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff'Ta5d6fffooterTa5d6ff'
Te6edf3footer_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffooter
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3footer_pileTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4)Tb4b4b4:
Te6edf3footer_pileTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff1 T8b949e# button row
Te6edf3button_row Tff7b72= Te6edf3footer_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3button_rowTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4)Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0
Tff7b72return Tff7b72None
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6fffooterTa5d6ff'Tb4b4b4:
Te6edf3footer_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffooter
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3footer_pileTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4)Tb4b4b4:
Te6edf3button_row Tff7b72= Te6edf3footer_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3button_rowTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4)Tb4b4b4:
T8b949e# If on first button (Back), move to Toggle button
Tff7b72if Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff0Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff2 T8b949e# skip spacer
Tff7b72return Tff7b72None
T8b949e# If on toggle button, move to Edit button
Tff7b72elif Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff2Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff4
Tff7b72return Tff7b72None
T8b949e# if on edit button wrap back to toggle button
Tff7b72elif Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff4Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff'Ta5d6ffshift tabTa5d6ff'Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6fffooterTa5d6ff'Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff'Ta5d6ffbodyTa5d6ff'
Tff7b72return Tff7b72None
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6fffooterTa5d6ff'Tb4b4b4:
Te6edf3footer_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffooter
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3footer_pileTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4)Tb4b4b4:
Te6edf3button_row Tff7b72= Te6edf3footer_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3button_rowTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff4Tb4b4b4: T8b949e# edit button
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff2 T8b949e# toggle button
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff2Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0 T8b949e# back button
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72== T79c0ff0Tb4b4b4: T8b949e# back button
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff'Ta5d6ffbodyTa5d6ff'
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff'Ta5d6ffdownTa5d6ff'Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6ffbodyTa5d6ff'Tb4b4b4:
Te6edf3result Tff7b72= Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)
T8b949e# if the key wasn't consumed, we're at the bottom
Tff7b72if Te6edf3result Tff7b72== Ta5d6ff'Ta5d6ffdownTa5d6ff'Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff'Ta5d6fffooterTa5d6ff'
Te6edf3footer_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffooter
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3footer_pileTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4)Tb4b4b4:
Te6edf3footer_pileTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff1 T8b949e# button row
Te6edf3button_row Tff7b72= Te6edf3footer_pileTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3button_rowTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4)Tb4b4b4:
Te6edf3button_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff0 T8b949e# focus on back button
Tff7b72return Tff7b72None
Tff7b72return Te6edf3result
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff'Ta5d6ffupTa5d6ff'Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6fffooterTa5d6ff'Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff'Ta5d6ffbodyTa5d6ff'
Te6edf3listbox Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffbody
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3listboxTb4b4b4, Ta5d6ff'Ta5d6ffbodyTa5d6ff'Tb4b4b4) Tff7b72and Tffa657lenTb4b4b4(Te6edf3listboxTff7b72.Td2a8ffbodyTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3listboxTff7b72.Td2a8fffocus_position Tff7b72= Tffa657lenTb4b4b4(Te6edf3listboxTff7b72.Td2a8ffbodyTb4b4b4) Tff7b72- T79c0ff1
Tff7b72return Tff7b72None
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72== Ta5d6ff'Ta5d6ffbodyTa5d6ff'Tb4b4b4:
Te6edf3result Tff7b72= Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)
T8b949e# if the key wasn't consumed, we're at the top
Tff7b72if Te6edf3result Tff7b72== Ta5d6ff'Ta5d6ffupTa5d6ff'Tb4b4b4:
Tff7b72pass
Tff7b72return Te6edf3result
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffhTa5d6ff" Tff7b72and Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4: T8b949e# horizontal layout
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_horizontalTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffswitch_to_horizontalTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffvTa5d6ff" Tff7b72and Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4: T8b949e# vertical layout
Tff7b72if Tff7b72selfTff7b72.Td2a8ffis_horizontalTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffswitch_to_verticalTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72None

Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72def Td2a8ffswitch_to_horizontalTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72return

Tff7b72selfTff7b72.Td2a8ffis_horizontal Tff7b72= Tff7b72True

Te6edf3body_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTff7b72.Td2a8ffbodyTb4b4b4[T79c0ff0Tb4b4b4]Tff7b72.Td2a8fforiginal_widget
Tff7b72for Te6edf3iTb4b4b4, Tb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3optionsTb4b4b4) Tff7b72in Tffa657enumerateTb4b4b4(Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3widget Tff7b72== Tff7b72selfTff7b72.Td2a8ffvertical_chartsTb4b4b4:
Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffhorizontal_chartsTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcharts_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffhorizontal_charts
Tff7b72break

Tff7b72def Td2a8ffswitch_to_verticalTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72return

Tff7b72selfTff7b72.Td2a8ffis_horizontal Tff7b72= Tff7b72False
Te6edf3body_pile Tff7b72= Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffbodyTff7b72.Td2a8ffbodyTb4b4b4[T79c0ff0Tb4b4b4]Tff7b72.Td2a8fforiginal_widget
Tff7b72for Te6edf3iTb4b4b4, Tb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3optionsTb4b4b4) Tff7b72in Tffa657enumerateTb4b4b4(Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3widget Tff7b72== Tff7b72selfTff7b72.Td2a8ffhorizontal_chartsTb4b4b4:
Te6edf3body_pileTff7b72.Td2a8ffcontentsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffvertical_chartsTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcharts_widget Tff7b72= Tff7b72selfTff7b72.Td2a8ffvertical_charts
Tff7b72break

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72and Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_bandwidth_chartsTb4b4b4)

Tff7b72def Td2a8ffupdate_bandwidth_chartsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Tff7b72return

Tff7b72tryTb4b4b4:
Te6edf3interface_stats Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffinterface_stats
Te6edf3stats_lookup Tff7b72= Tb4b4b4{Te6edf3ifaceTb4b4b4[Ta5d6ff'Ta5d6ffshort_nameTa5d6ff'Tb4b4b4]Tb4b4b4: Te6edf3iface Tff7b72for Te6edf3iface Tff7b72in Te6edf3interface_statsTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4}
Te6edf3stats Tff7b72= Te6edf3stats_lookupTff7b72.Td2a8ffgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)

Te6edf3tx Tff7b72= Te6edf3statsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8fftxTb4b4b4)
Te6edf3rx Tff7b72= Te6edf3statsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffrxTb4b4b4)

Te6edf3new_connection_status Tff7b72= Te6edf3statsTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)
Tff7b72if Te6edf3new_connection_status Tff7b72!= Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_connection_displayTb4b4b4(Te6edf3new_connection_statusTb4b4b4)

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_connectedTb4b4b4:
Tff7b72return

Tff7b72selfTff7b72.Td2a8fftx_textTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3txTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_textTff7b72.Td2a8ffset_textTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4, Te6edf3format_bytesTb4b4b4(Te6edf3rxTb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffbandwidth_chartTff7b72.Td2a8ffupdateTb4b4b4(Te6edf3rxTb4b4b4, Te6edf3txTb4b4b4)

Te6edf3rx_chartTb4b4b4, Te6edf3tx_chartTb4b4b4, Te6edf3peak_rxTb4b4b4, Te6edf3peak_tx Tff7b72= Tff7b72selfTff7b72.Td2a8ffbandwidth_chartTff7b72.Td2a8ffget_chartsTb4b4b4(Te6edf3heightTff7b72=T79c0ff8Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffrx_chart_textTff7b72.Td2a8ffset_textTb4b4b4(Te6edf3rx_chartTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_chart_textTff7b72.Td2a8ffset_textTb4b4b4(Te6edf3tx_chartTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrx_peak_textTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPeak: Tffd700{Te6edf3peak_rxTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftx_peak_textTff7b72.Td2a8ffset_textTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPeak: Tffd700{Te6edf3peak_txTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8fftx Tff7b72= Te6edf3tx
Tff7b72selfTff7b72.Td2a8ffrx Tff7b72= Te6edf3rx
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffparentTb4b4b4,
Ta5d6ff'Ta5d6ffdisconnect_overlayTa5d6ff'Tb4b4b4) Tff7b72or Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffwidget Tff7b72is Tff7b72not Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffdisconnect_overlayTb4b4b4:
Te6edf3dialog_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(!) RNS Instance DisconnectedTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ffWaiting to Reconnect...Ta5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Te6edf3dialog_content Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3dialog_textTb4b4b4)
Te6edf3dialog_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3dialog_contentTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffdisconnect_overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialog_boxTb4b4b4,
Tff7b72selfTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff35Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff4
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffdisconnect_overlay
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72finallyTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Te6edf3loopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_bandwidth_chartsTb4b4b4)

Tff7b72def Td2a8ffon_backTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffswitch_to_listTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffon_editTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffparentTff7b72.Td2a8ffswitch_to_edit_interfaceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffiface_nameTb4b4b4)

T8b949e### MAIN DISPLAY ###
Tff7b72class T56d364InterfaceDisplayTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffpoll_scheduler Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffsize_scheduler Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffinterface_items Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffglyphset Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffglyphsTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffg Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffterminal_colsTb4b4b4, Tff7b72selfTff7b72.Td2a8ffterminal_rows Tff7b72= Te6edf3_get_cols_rowsTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffiface_row_offset Tff7b72= T79c0ff4
Tff7b72selfTff7b72.Td2a8fflist_rows Tff7b72= Tff7b72selfTff7b72.Td2a8ffterminal_rows Tff7b72- Tff7b72selfTff7b72.Td2a8ffiface_row_offset

Te6edf3interfaces Tff7b72= Te6edf3appTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]
Te6edf3processed_interfaces Tff7b72= Tb4b4b4{Tb4b4b4}

Tff7b72for Te6edf3interface_nameTb4b4b4, Te6edf3interface Tff7b72in Te6edf3interfacesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3interface_data Tff7b72= Te6edf3interfaceTff7b72.Td2a8ffcopyTb4b4b4(Tb4b4b4)

T8b949e# handle sub-interfaces for RNodeMultiInterface
Tff7b72if Te6edf3interface_dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff"Tb4b4b4:
Te6edf3sub_interfaces Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3sub_nameTb4b4b4, Te6edf3sub_config Tff7b72in Te6edf3interface_dataTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3sub_name Tff7b72not Tff7b72in Tb4b4b4{Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffportTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffselected_interface_modeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffconfigured_bitrateTa5d6ff"Tb4b4b4}Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3sub_configTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3sub_configTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3sub_name
Te6edf3sub_interfacesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3sub_configTb4b4b4)

T8b949e# add sub-interfaces to the main interface data
Te6edf3interface_dataTb4b4b4[Ta5d6ff"Ta5d6ffsub_interfacesTa5d6ff"Tb4b4b4] Tff7b72= Te6edf3sub_interfaces

Tff7b72for Te6edf3sub Tff7b72in Te6edf3sub_interfacesTb4b4b4:
Tff7b72del Te6edf3interface_dataTb4b4b4[Te6edf3subTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4]

Te6edf3processed_interfacesTb4b4b4[Te6edf3interface_nameTb4b4b4] Tff7b72= Te6edf3interface_data

Te6edf3appTff7b72.Td2a8ffinterface_stats Tff7b72= Te6edf3appTff7b72.Td2a8ffrnsTff7b72.Td2a8ffget_interface_statsTb4b4b4(Tb4b4b4)
Te6edf3interface_stats Tff7b72= Te6edf3appTff7b72.Td2a8ffinterface_stats
Te6edf3stats_lookup Tff7b72= Tb4b4b4{Te6edf3interfaceTb4b4b4[Ta5d6ff'Ta5d6ffshort_nameTa5d6ff'Tb4b4b4]Tb4b4b4: Te6edf3interface Tff7b72for Te6edf3interface Tff7b72in Te6edf3interface_statsTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4}
T8b949e# print(stats_lookup)
Tff7b72for Te6edf3interface_nameTb4b4b4, Te6edf3interface_data Tff7b72in Te6edf3processed_interfacesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# configobj false values
Te6edf3is_enabled Tff7b72= Tffa657strTb4b4b4(Te6edf3interface_dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72not Tff7b72in Tb4b4b4(Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffoffTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffnoTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4) Tff7b72and Tffa657strTb4b4b4(Te6edf3interface_dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffinterface_enabledTa5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72not Tff7b72in Tb4b4b4(Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffoffTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffnoTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4)

Te6edf3iface_type Tff7b72= Te6edf3interface_dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUnknownTa5d6ff"Tb4b4b4)
Te6edf3icon Tff7b72= Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4, Te6edf3iface_typeTb4b4b4)

Te6edf3stats_for_interface Tff7b72= Te6edf3stats_lookupTff7b72.Td2a8ffgetTb4b4b4(Te6edf3interface_nameTb4b4b4)

Tff7b72if Te6edf3stats_for_interfaceTb4b4b4:
Te6edf3tx Tff7b72= Te6edf3stats_for_interfaceTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Te6edf3rx Tff7b72= Te6edf3stats_for_interfaceTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Te6edf3is_connected Tff7b72= Te6edf3stats_for_interfaceTb4b4b4[Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3tx Tff7b72= T79c0ff0
Te6edf3rx Tff7b72= T79c0ff0
Te6edf3is_connected Tff7b72= Tff7b72False

Te6edf3item Tff7b72= Te6edf3SelectableInterfaceItemTb4b4b4(
Te6edf3parentTff7b72=Tff7b72selfTb4b4b4,
Te6edf3nameTff7b72=Te6edf3interface_dataTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, Te6edf3interface_nameTb4b4b4)Tb4b4b4,
Te6edf3is_connectedTff7b72=Te6edf3is_connectedTb4b4b4,
Te6edf3is_enabledTff7b72=Te6edf3is_enabledTb4b4b4,
Te6edf3iface_typeTff7b72=Te6edf3iface_typeTb4b4b4,
Te6edf3txTff7b72=Te6edf3txTb4b4b4,
Te6edf3rxTff7b72=Te6edf3rxTb4b4b4,
Te6edf3iconTff7b72=Te6edf3icon
Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffinterface_itemsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3itemTb4b4b4)

Te6edf3interface_header Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffInterfacesTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_itemsTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Te6edf3interface_header Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(
Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNo interfaces found. Press Ctrl + A to add a new interface Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)


Te6edf3list_contents Tff7b72= Tb4b4b4[
Te6edf3interface_headerTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4] Tff7b72+ Tff7b72selfTff7b72.Td2a8ffinterface_items

Tff7b72selfTff7b72.Td2a8fflist_walker Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSimpleFocusListWalkerTb4b4b4(Te6edf3list_contentsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflist_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffListBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8fflist_walkerTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffbox_adapter Tff7b72= Te6edf3urwidTff7b72.Td2a8ffBoxAdapterTb4b4b4(Tff7b72selfTff7b72.Td2a8fflist_boxTb4b4b4, Tff7b72selfTff7b72.Td2a8fflist_rowsTb4b4b4)


Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[Tff7b72selfTff7b72.Td2a8ffbox_adapterTb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinterfaces_display Tff7b72= Te6edf3InterfaceFillerTb4b4b4(Te6edf3pileTb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshortcuts_display Tff7b72= Te6edf3InterfaceDisplayShortcutsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterfaces_display

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# started from Main.py
Tff7b72selfTff7b72.Td2a8ffstarted Tff7b72= Tff7b72True
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffpoll_schedulerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffpoll_statsTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffsize_schedulerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff5Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffcheck_terminal_sizeTb4b4b4)

Tff7b72def Td2a8ffswitch_to_edit_interfaceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffedit_interface_view Tff7b72= Te6edf3EditInterfaceViewTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_nameTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffedit_interface_view
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffedit_selected_interfaceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3focus_widgetTb4b4b4, Te6edf3focus_position Tff7b72= Tff7b72selfTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ff_original_widgetTff7b72.Td2a8ffbodyTff7b72.Td2a8ffget_focusTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3focus_widgetTb4b4b4, Te6edf3SelectableInterfaceItemTb4b4b4)Tb4b4b4:
Tff7b72return

Te6edf3selected_item Tff7b72= Te6edf3focus_widget
Te6edf3interface_name Tff7b72= Te6edf3selected_itemTff7b72.Td2a8ffname

Tff7b72selfTff7b72.Td2a8ffswitch_to_edit_interfaceTb4b4b4(Te6edf3interface_nameTb4b4b4)

Tff7b72def Td2a8ffcheck_terminal_sizeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsize_scheduler Tff7b72= Tff7b72True
Te6edf3new_colsTb4b4b4, Te6edf3new_rows Tff7b72= Te6edf3_get_cols_rowsTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3new_rows Tff7b72!= Tff7b72selfTff7b72.Td2a8ffterminal_rows Tff7b72or Te6edf3new_cols Tff7b72!= Tff7b72selfTff7b72.Td2a8ffterminal_colsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffterminal_colsTb4b4b4, Tff7b72selfTff7b72.Td2a8ffterminal_rows Tff7b72= Te6edf3new_colsTb4b4b4, Te6edf3new_rows
Tff7b72selfTff7b72.Td2a8fflist_rows Tff7b72= Tff7b72selfTff7b72.Td2a8ffterminal_rows Tff7b72- Tff7b72selfTff7b72.Td2a8ffiface_row_offset

Tff7b72selfTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ffheight Tff7b72= Tff7b72selfTff7b72.Td2a8fflist_rows

Te6edf3loopTff7b72.Td2a8ffdraw_screenTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Te6edf3loopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff5Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffcheck_terminal_sizeTb4b4b4)

Tff7b72def Td2a8ffpoll_statsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3loopTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpoll_scheduler Tff7b72= Tff7b72True
Tff7b72tryTb4b4b4:
Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffdisconnect_overlayTa5d6ff'Tb4b4b4) Tff7b72and Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72is Tff7b72selfTff7b72.Td2a8ffdisconnect_overlayTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterfaces_display
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffinterface_stats Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffget_interface_statsTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3interface_stats Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffinterface_stats
Te6edf3stats_lookup Tff7b72= Tb4b4b4{Te6edf3ifaceTb4b4b4[Ta5d6ff'Ta5d6ffshort_nameTa5d6ff'Tb4b4b4]Tb4b4b4: Te6edf3iface Tff7b72for Te6edf3iface Tff7b72in Te6edf3interface_statsTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4}
Tff7b72for Te6edf3item Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_itemsTb4b4b4:
T8b949e# use interface name as the key
Te6edf3stats_for_interface Tff7b72= Te6edf3stats_lookupTff7b72.Td2a8ffgetTb4b4b4(Te6edf3itemTff7b72.Td2a8ffnameTb4b4b4)
Tff7b72if Te6edf3stats_for_interfaceTb4b4b4:
Te6edf3tx Tff7b72= Te6edf3stats_for_interfaceTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fftxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Te6edf3rx Tff7b72= Te6edf3stats_for_interfaceTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffrxbTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)
Te6edf3itemTff7b72.Td2a8ffupdate_statsTb4b4b4(Te6edf3txTb4b4b4, Te6edf3rxTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffdisconnect_overlayTa5d6ff'Tb4b4b4) Tff7b72or Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72is Tff7b72not Tff7b72selfTff7b72.Td2a8ffdisconnect_overlayTb4b4b4:
Te6edf3dialog_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffdisconnected_statusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff(!) RNS Instance DisconnectedTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffWaiting to Reconnect...Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)
Tb4b4b4]Tb4b4b4)
Te6edf3dialog_content Tff7b72= Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3dialog_textTb4b4b4)
Te6edf3dialog_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3dialog_contentTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdisconnect_overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialog_boxTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffinterfaces_displayTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=T79c0ff35Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=T79c0ff4
Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72is Tff7b72selfTff7b72.Td2a8ffinterfaces_displayTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffdisconnect_overlay
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72finallyTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffstartedTb4b4b4:
Te6edf3loopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff1Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffpoll_statsTb4b4b4)

Tff7b72def Td2a8ffshortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffshortcuts_display

Tff7b72def Td2a8ffswitch_to_show_interfaceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_nameTb4b4b4)Tb4b4b4:
Te6edf3show_interface Tff7b72= Te6edf3ShowInterfaceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_nameTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3show_interface
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Te6edf3show_interfaceTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffswitch_to_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffshortcuts_displayTff7b72.Td2a8ffreset_shortcutsTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterfaces_display
Tff7b72selfTff7b72.Td2a8ff_rebuild_listTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffadd_interfaceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3dialog_widgets Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72def Td2a8ffadd_headingTb4b4b4(Te6edf3txtTb4b4b4)Tb4b4b4:
Te6edf3dialog_widgetsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Te6edf3txtTb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffadd_optionTb4b4b4(Te6edf3labelTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3item Tff7b72= Te6edf3InterfaceOptionItemTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3valueTb4b4b4)
Te6edf3dialog_widgetsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3itemTb4b4b4)

T8b949e# Get the icons based on plain, unicode, nerdfont glyphset
Te6edf3network_icon Tff7b72= Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4, Ta5d6ff"Ta5d6ffAutoInterfaceTa5d6ff"Tb4b4b4)
Te6edf3rnode_icon Tff7b72= Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4, Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4)
Te6edf3serial_icon Tff7b72= Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4, Ta5d6ff"Ta5d6ffSerialInterfaceTa5d6ff"Tb4b4b4)
Te6edf3other_icon Tff7b72= Te6edf3_get_interface_iconTb4b4b4(Tff7b72selfTff7b72.Td2a8ffglyphsetTb4b4b4, Ta5d6ff"Ta5d6ffPipeInterfaceTa5d6ff"Tb4b4b4)

Te6edf3add_headingTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3network_iconTffd700}Ta5d6ff IP NetworksTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffAuto InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAutoInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffTCP Client InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTCPClientInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffTCP Server InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffUDP InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffUDPInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffI2P InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3PLATFORM_IS_LINUXTb4b4b4:
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffBackbone InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff"Tb4b4b4)

Tff7b72if Te6edf3PYSERIAL_AVAILABLETb4b4b4:
Te6edf3add_headingTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3rnode_iconTffd700}Ta5d6ff RNodesTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffRNode InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffRNode Multi InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffRNodeMultiInterfaceTa5d6ff"Tb4b4b4)

Te6edf3add_headingTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3serial_iconTffd700}Ta5d6ff HardwareTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffSerial InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffSerialInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffKISS InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffAX.25 KISS InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAX25KISSInterfaceTa5d6ff"Tb4b4b4)

Te6edf3add_headingTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3other_iconTffd700}Ta5d6ff OtherTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffPipe InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffPipeInterfaceTa5d6ff"Tb4b4b4)
Te6edf3add_optionTb4b4b4(Ta5d6ff"Ta5d6ffCustom InterfaceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCustomInterfaceTa5d6ff"Tb4b4b4)


Te6edf3listbox Tff7b72= Te6edf3urwidTff7b72.Td2a8ffListBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffSimpleFocusListWalkerTb4b4b4(Te6edf3dialog_widgetsTb4b4b4)Tb4b4b4)
Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(Te6edf3listboxTb4b4b4, Te6edf3parentTff7b72=Tff7b72selfTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffSelect Interface TypeTa5d6ff"Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffinterfaces_displayTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=Tb4b4b4(Ta5d6ff'Ta5d6ffrelativeTa5d6ff'Tb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=Tb4b4b4(Ta5d6ff'Ta5d6ffrelativeTa5d6ff'Tb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4,
Te6edf3min_widthTff7b72=T79c0ff20Tb4b4b4,
Te6edf3min_heightTff7b72=T79c0ff15Tb4b4b4,
Te6edf3leftTff7b72=T79c0ff2Tb4b4b4,
Te6edf3rightTff7b72=T79c0ff2
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3overlay
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffswitch_to_add_interfaceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_typeTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffadd_interface_view Tff7b72= Te6edf3AddInterfaceViewTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3iface_typeTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffadd_interface_view
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffremove_selected_interfaceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3focus_widgetTb4b4b4, Te6edf3focus_position Tff7b72= Tff7b72selfTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ff_original_widgetTff7b72.Td2a8ffbodyTff7b72.Td2a8ffget_focusTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3focus_widgetTb4b4b4, Te6edf3SelectableInterfaceItemTb4b4b4)Tb4b4b4:
Tff7b72return

Te6edf3selected_item Tff7b72= Te6edf3focus_widget
Te6edf3interface_name Tff7b72= Te6edf3selected_itemTff7b72.Td2a8ffname

Tff7b72def Td2a8ffon_confirm_yesTb4b4b4(Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Te6edf3interface_name Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4:
Tff7b72del Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff'Ta5d6ffinterfacesTa5d6ff'Tb4b4b4]Tb4b4b4[Te6edf3interface_nameTb4b4b4]
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigTff7b72.Td2a8ffwriteTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3selected_item Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_itemsTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinterface_itemsTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3selected_itemTb4b4b4)

Tff7b72selfTff7b72.Td2a8ff_rebuild_listTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdismiss_dialogTb4b4b4(Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72def Td2a8ffon_confirm_noTb4b4b4(Te6edf3buttonTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdismiss_dialogTb4b4b4(Tb4b4b4)

Te6edf3confirm_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffRemove interface Tffd700{Te6edf3interface_nameTffd700}Ta5d6ff?Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)
Te6edf3yes_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3on_confirm_yesTb4b4b4)
Te6edf3no_button Tff7b72= Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4(Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3on_confirm_noTb4b4b4)

Te6edf3buttons_row Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(Tb4b4b4[
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3yes_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.1Tb4b4b4, Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWEIGHTTb4b4b4, T79c0ff0.45Tb4b4b4, Te6edf3no_buttonTb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4)

Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Tb4b4b4[
Te6edf3confirm_textTb4b4b4,
Te6edf3buttons_row
Tb4b4b4]Tb4b4b4)

Te6edf3dialog Tff7b72= Te6edf3DialogLineBoxTb4b4b4(Te6edf3pileTb4b4b4, Te6edf3parentTff7b72=Tff7b72selfTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4)

Te6edf3overlay Tff7b72= Te6edf3urwidTff7b72.Td2a8ffOverlayTb4b4b4(
Te6edf3dialogTb4b4b4,
Tff7b72selfTff7b72.Td2a8ffinterfaces_displayTb4b4b4,
Te6edf3alignTff7b72=Ta5d6ff'Ta5d6ffcenterTa5d6ff'Tb4b4b4,
Te6edf3widthTff7b72=Tb4b4b4(Ta5d6ff'Ta5d6ffrelativeTa5d6ff'Tb4b4b4, T79c0ff35Tb4b4b4)Tb4b4b4,
Te6edf3valignTff7b72=Ta5d6ff'Ta5d6ffmiddleTa5d6ff'Tb4b4b4,
Te6edf3heightTff7b72=Tb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4,
Te6edf3min_widthTff7b72=T79c0ff5Tb4b4b4,
Te6edf3leftTff7b72=T79c0ff2Tb4b4b4,
Te6edf3rightTff7b72=T79c0ff2
Tb4b4b4)
Te6edf3dialogTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff1 T8b949e# columns row
Te6edf3buttons_row Tff7b72= Te6edf3dialogTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3buttons_rowTff7b72.Td2a8fffocus_position Tff7b72= T79c0ff2 T8b949e# second button "No"

Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3overlay
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffdismiss_dialogTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterfaces_display
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ff_rebuild_listTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3interface_header Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ffInterfaces (Tffd700{Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_itemsTb4b4b4)Tffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_itemsTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Te6edf3interface_header Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffinterface_titleTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffNo interfaces found. Press Ctrl + A to add a new interface Ta5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffcenterTa5d6ff"Tb4b4b4)

Te6edf3new_list Tff7b72= Tb4b4b4[
Te6edf3interface_headerTb4b4b4,
Te6edf3urwidTff7b72.Td2a8ffDividerTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4] Tff7b72+ Tff7b72selfTff7b72.Td2a8ffinterface_items
T8b949e# RNS.log(f"items: {self.interface_items}")

Te6edf3walker Tff7b72= Te6edf3urwidTff7b72.Td2a8ffSimpleFocusListWalkerTb4b4b4(Te6edf3new_listTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ff_original_widgetTff7b72.Td2a8ffbody Tff7b72= Te6edf3walker
Tff7b72selfTff7b72.Td2a8ffbox_adapterTff7b72.Td2a8ff_original_widgetTff7b72.Td2a8fffocus_position Tff7b72= Tffa657lenTb4b4b4(Te6edf3new_listTb4b4b4) Tff7b72- T79c0ff1

Tff7b72def Td2a8ffopen_config_editorTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72import T7ee787platform

Te6edf3editor_cmd Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffeditorTa5d6ff"Tb4b4b4]

Tff7b72if Te6edf3platformTff7b72.Td2a8ffsystemTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffDarwinTa5d6ff" Tff7b72and Te6edf3editor_cmd Tff7b72== Ta5d6ff"Ta5d6ffeditorTa5d6ff"Tb4b4b4:
Te6edf3editor_cmd Tff7b72= Ta5d6ff"Ta5d6ffnanoTa5d6ff"

Te6edf3editor_term Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTerminalTb4b4b4(
Tb4b4b4(Te6edf3editor_cmdTb4b4b4, Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrnsTff7b72.Td2a8ffconfigpathTb4b4b4)Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff'Ta5d6ffutf-8Ta5d6ff'Tb4b4b4,
Te6edf3main_loopTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffquit_termTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterfaces_display
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffrequest_redrawTb4b4b4(Tb4b4b4)

Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3editor_termTb4b4b4, Ta5d6ff'Ta5d6ffclosedTa5d6ff'Tb4b4b4, Te6edf3quit_termTb4b4b4)

Te6edf3editor_box Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3editor_termTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffEditing RNS ConfigTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3editor_box
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffbodyTa5d6ff"
Te6edf3editor_termTff7b72.Td2a8ffchange_focusTb4b4b4(Tff7b72TrueTb4b4b4)

T8b949e### SHORTCUTS ###
Tff7b72class T56d364InterfaceDisplayShortcutsTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffdefault_shortcuts Tff7b72= Ta5d6ff"Ta5d6ff[C-a] Add Interface [C-e] Edit Interface [C-x] Remove Interface [Enter] Show Interface [C-w] Open Text EditorTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffcurrent_shortcuts Tff7b72= Tff7b72selfTff7b72.Td2a8ffdefault_shortcuts
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(
Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcurrent_shortcutsTb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffshortcutbarTa5d6ff"
Tb4b4b4)

Tff7b72def Td2a8ffupdate_shortcutsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3new_shortcutsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcurrent_shortcuts Tff7b72= Te6edf3new_shortcuts
Tff7b72selfTff7b72.Td2a8ffwidgetTff7b72.Td2a8fforiginal_widgetTff7b72.Td2a8ffset_textTb4b4b4(Te6edf3new_shortcutsTb4b4b4)

Tff7b72def Td2a8ffreset_shortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_shortcutsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdefault_shortcutsTb4b4b4)

Tff7b72def Td2a8ffset_show_interface_shortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3show_shortcuts Tff7b72= Ta5d6ff"Ta5d6ff[Up/Down] Navigate [Tab] Switch Focus [h] Horizontal Charts [v] Vertical Charts Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_shortcutsTb4b4b4(Te6edf3show_shortcutsTb4b4b4)

Tff7b72def Td2a8ffset_add_interface_shortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3add_shortcuts Tff7b72= Ta5d6ff"Ta5d6ff[Up/Down] Navigate Fields [Enter] Select OptionTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_shortcutsTb4b4b4(Te6edf3add_shortcutsTb4b4b4)

Tff7b72def Td2a8ffset_edit_interface_shortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3edit_shortcuts Tff7b72= Ta5d6ff"Ta5d6ff[Up/Down] Navigate Fields [Enter] Select OptionTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffupdate_shortcutsTb4b4b4(Te6edf3edit_shortcutsTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────